【发布时间】:2015-05-22 15:37:50
【问题描述】:
我正在尝试使用 DISTINCT 仅获取唯一的主键值,但无法弄清楚 DISTINCT 不起作用的原因。下面的 TSQL(使用 Windows Azure SQL Server)试图通过查看地址字段中的第一个数值字符串来识别重复的地址。它正在正确返回匹配项,但重复值太多。
SELECT DISTINCT a.Id AS DinstinctID
,b.Id AS LeftID
,LEFT(b.StreetAddress, CHARINDEX(' ', b.StreetAddress))
,LEFT(a.StreetAddress, CHARINDEX(' ', a.StreetAddress))
FROM [User] a
JOIN [User] b ON b.Id != a.Id AND
LEFT(a.StreetAddress,CHARINDEX(' ', a.StreetAddress)) =
LEFT(b.StreetAddress,CHARINDEX(' ', b.StreetAddress))
AND b.DateSubmitted >= DATEADD(day, -5, CONVERT(DATE, GETDATE()))
【问题讨论】:
-
仔细查看前导或尾随空格或不可打印的字符。您可以尝试将字符串与“!”之类的内容连接起来。前后看空间。
-
现在正在清理它,仍然习惯 SO 格式抱歉。
-
你真的确定你想要一个笛卡尔积,但不包括(仅)主对角线?
-
感谢 Krishnraj!看起来好多了……
-
我不确定你在问 Pieter 什么?
标签: sql-server tsql distinct