如果在 Select-Query 中满足特定条件,则创建唯一标识符

Posted

技术标签:

【中文标题】如果在 Select-Query 中满足特定条件,则创建唯一标识符【英文标题】:Creating a unique identifier if a specific condition is met in Select-Query 【发布时间】:2021-07-07 20:07:53 【问题描述】:

我今天写的查询有问题。这是我的查询:

SELECT DISTINCT             
    t1.ID,
    t1.description,
    t1.plz,
    t1.street
FROM 
    Customer AS t1
JOIN 
    Customer ON t1.PLZ = Customer.PLZ
             AND t1.street= Customer.street
             AND t1.ID <> Customer.ID
ORDER BY 
    t1.plz, t1.street

我希望我的结果对于 t1.Strasse 和 t1.PLZ 与其他数据记录中的所有值具有唯一标识符。

像这样:

Identifier ID description plz street
001 1 Grocery 00001 Main Street 1
001 4 Juice Maker 00001 Main Street 1
001 5 Bakery 00001 Main Street 1
002 6 Bakery 00001 NotMain Street 2
003 10 Grocery 00001 Beacon Street 101
003 11 Juice Maker 00001 Beacon Street 101

我的主要问题是我不知道如何创建这个标识符以及如何增加它。

谢谢你帮助我。

【问题讨论】:

试试row_number() “唯一标识符”是什么意思?uniqueidentifier?如果是这样,您可以使用NEWID(),但是,增加uniqueidentifier 没有任何意义。 不,我不是这个意思。我什至不知道 uniqueidentifier。我不知道我想要的东西的确切术语,这就是为什么我试图在表格中形象化这个概念。也许组标识符是一个更好的词。 【参考方案1】:

您可以使用dense_rank() 进行枚举。另外,我认为您不需要自我加入:

SELECT c.ID, c.description, c.plz, c.street
       DENSE_RANK() OVER (ORDER BY t1.street, t1.plz)
FROM (SELECT c.*,
             COUNT(*) OVER (PARTITION BY street, plz) as cntCustomer c 
      FROM Customer c2
     ) c
WHERE cnt > 1
ORDER BY t1.plz, t1.street

【讨论】:

以上是关于如果在 Select-Query 中满足特定条件,则创建唯一标识符的主要内容,如果未能解决你的问题,请参考以下文章

如果仅在 MongoDB 中满足特定条件,则分组

如果满足多个特定条件,则在 pandas 中删除行

如果if条件满足,如何跳转到for循环中的特定位置?

ASP .NET MVC:如果不满足特定条件,则重定向到视图

MySQL存储过程——一一检查是不是满足某些条件;如果不满足,则退出程序并返回特定消息

geom_tile:如果满足特定条件,则显示图块颜色