您的位置:首页 > 数据库

不显示某字段有重复的记录 SQL语句

2013-01-05 14:52 183 查看
详细解释下需求:

根据某字段(此例中为StateProvinceID)做判断,如果发现表中该字段有重复值,则结果不显示该条记录。

一,最直接的方法,效率低

SELECT * FROM
(
SELECT StateProvinceID FROM
(
SELECT COUNT(*) AS num ,ad.StateProvinceID
FROM Person.Address ad
GROUP BY StateProvinceID
)AS tt
WHERE tt.num<2  --排除重复
) AS tab
INNER JOIN Person.Address addr ON tab.StateProvinceID=addr.StateProvinceID


二、使用了CTE

with t1
AS(
SELECT
* FROM Person.Address --WHERE AddressID<200
),
t2
AS(
SELECT
COUNT(*) AS num ,
t1.StateProvinceID
FROM t1
GROUP BY StateProvinceID
)
SELECT * FROM T2
INNER JOIN T1 ON t2.StateProvinceID = t1.StateProvinceID
WHERE t2.num<2


三、最终版

with  t2
AS(
SELECT
COUNT(*) AS num ,
t1.StateProvinceID
FROM Person.Address t1
GROUP BY StateProvinceID
)
SELECT * FROM
(
SELECT T2.StateProvinceID  FROM t2 WHERE num<2
) AS T3
INNER JOIN Person.Address t1 ON T3.StateProvinceID=t1.StateProvinceID


还听到有人说可以写个func来判断存临时表,本人没有测试,在此没有列出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: