2016-11-19 7 views
1

は、私が学生のテーブルsqlを使用して一意のレコード番号を表示する方法は?

id | name | zip 
1 | abc | 1234 
2 | xyz | 4321 
3 | cde | 1234 

を持っていると私は、私だけが1と3のレコード番号を表示したくない4321で独自の郵便番号を表示したいです。では、どのようにしてユニークなレコードのみを表示できますか?

ありがとうございました。

+0

に動作しますか? – 1000111

答えて

4

次のクエリはあなたに重複して表示されていないすべての郵便番号与える:あなたはにしたい場合は

SELECT zip 
FROM yourTable 
GROUP BY zip 
HAVING COUNT(*) = 1 

をもその後、完全なレコードを取得しますあなたは、元のテーブルをフィルタリングするサブクエリとして上記を使用することができます。

SELECT * 
FROM yourTable t1 
INNER JOIN 
(
    SELECT zip 
    FROM yourTable 
    GROUP BY zip 
    HAVING COUNT(*) = 1 
) t2 
    ON t1.zip = t2.zip 

またはこの:

SELECT * 
FROM yourTable 
WHERE zip IN 
(
    SELECT zip 
    FROM yourTable 
    GROUP BY zip 
    HAVING COUNT(*) = 1 
) 
+1

ありがとうございました。 –

0

DISTINCT修飾子を使用すると、selectに強制的に複数の列に1つの値しか表示されなくなります。あなたのケースでは、次のようになります。

SELECT DISTINCT ZIP 
    FROM ... 
1

これはまた、あなたが何をしようとしなかった

select 
    id, name, zip 
from 
    (select 
     id, name, zip, count(zip) as countZip 
    from 
     student 
    group by zip) as subq 
where 
    countZip = '1' 
関連する問題