0

重複していない重複しない値を選択する必要があります。個別の使用は解決策ではありません。グループ化に使用される行から複数​​のフィールドを表示する必要があります。

1つのフィールドのみを表示する私のクエリ:

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 を追加するだけではうまくいきません。長いグーグルの後、私はあきらめます。あなたの助けが必要です:)

4

1 に答える 1

2

サブクエリを使用するだけです。

このような:

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
于 2013-10-01T17:44:37.943 に答える