MSSQL 2008 - 仅选择列具有唯一值从不重复的行

  • 本文关键字:唯一 2008 选择 MSSQL sql sql-server
  • 更新时间 :
  • 英文 :


我需要选择不重复的值,这些值永远不会重复,使用不同的不是解决方案。我需要显示行中的更多字段,这习惯于分组。

我的查询只显示一个字段:

SELECT NIPL
FROM KONTRAHENT  GROUP BY NIPL HAVING (COUNT(NIPL)=1) 
ORDER BY NIPL DESC

桌子:

id | NIPL
 1 | 230
 2 | 450   <- I want to select only this row
 3 | 230
 3 | 123
 4 | 123

现在我的选择只返回 NIPL。简单地将 id 添加到语句不会醒来。经过长时间的谷歌搜索,我放弃了。我需要你的帮助:)

你只需要使用一个子查询。

喜欢这个:

SELECT * 
FROM KONTRAHENT
WHERE NIPL IN 
(
   SELECT NIPL
   FROM KONTRAHENT
   GROUP BY NIPL
   HAVING COUNT(NIPL)=1 
)
ORDER BY NIPL DESC

或者这个:

SELECT * 
FROM KONTRAHENT
JOIN 
(
   SELECT NIPL
   FROM KONTRAHENT
   GROUP BY NIPL
   HAVING COUNT(NIPL)=1 
) AS SUB ON KONTRAHENT.NIPL = SUB.NIPL
ORDER BY KONTRAHENT.NIPL DESC

或者(在允许 CTE 的系统中)以下内容:

WITH SUB AS
(
   SELECT NIPL
   FROM KONTRAHENT
   GROUP BY NIPL
   HAVING COUNT(NIPL)=1 
) 
SELECT * 
FROM KONTRAHENT
JOIN SUB ON KONTRAHENT.NIPL = SUB.NIPL
ORDER BY KONTRAHENT.NIPL DESC

最新更新