私はテーブルを持っていますstudentこのような
id | name | Zip
1 | abc | 1234
2 | xyz | 4321
3 | asd | 1234
すべてのレコードを取得したいのですが、郵便番号を繰り返さないでください。したがって、上記のテーブルレコードの場合、レコードNo 1および2をフェッチする必要があります。レコードNo. 3には、すでにレコードNo. 1にある郵便番号が含まれているため、フェッチされません。
SELECT DISTINCT fieldName FROM tableName;
次のクエリは、個別の「Zip」フィールドのみを選択します。
SELECT DISTINCT Zip FROM student;
SELECT * FROM tableName GROUP BY fieldName;
次のクエリは、個別のZipフィールドとともにすべてのフィールドを選択します。
SELECT * FROM student GROUP BY Zip;
試す
SELECT DISTINCT(Zip),id,name FROM student;
OR
SELECT * FROM student GROUP BY Zip;
MySQLでは、次の方法で回避できます。
SELECT *
FROM student
GROUP BY Zip
私は選択します:
SELECT *
FROM student t
JOIN
( SELECT MIN(id) AS minid
FROM student
GROUP BY Zip
) AS grp
ON grp.minid = t.id
おそらく他の列は興味があるので...
SELECT y.*
FROM yourTable y,
(SELECT MIN(y2.id)
FROM yourTable y2
GROUP BY y2.Zip) ilv
WHERE ilv.id=y.id;
(または max-concatトリック を使用できます)
更新
Oracleはリンクされたページから最大連結トリックを削除しました-しかし 説明 他の場所 on the internet
以下のように使用しても問題ありませんか?
select distinct Zip,name,id from student;
使ってみる
Select Distinct(Zip),id,name group by Zip;