如果在 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 中满足特定条件,则创建唯一标识符的主要内容,如果未能解决你的问题,请参考以下文章
ASP .NET MVC:如果不满足特定条件,则重定向到视图