我有一个学生这样的表
id | name | zip
1 | abc | 1234
2 | xyz | 4321
3 | asd | 1234
我想获取所有记录,但邮政编码不应重复。因此,如果是上表记录,则应提取记录No 1和2。不会获取第3号记录,因为它的邮政编码已经在第1号记录中
答案 0 :(得分:35)
SELECT DISTINCT fieldName FROM tableName;
以下查询仅选择不同的'zip'字段。
SELECT DISTINCT zip FROM student;
SELECT * FROM tableName GROUP BY fieldName;
以下查询将选择所有字段以及不同的zip字段。
SELECT * FROM student GROUP BY zip;
答案 1 :(得分:6)
TRY
SELECT DISTINCT(zip),id,name FROM student;
OR
SELECT * FROM student GROUP BY zip;
答案 2 :(得分:3)
虽然在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
答案 3 :(得分:2)
因为可能其他专栏有一些兴趣......
SELECT y.*
FROM yourTable y,
(SELECT MIN(y2.id)
FROM yourTable y2
GROUP BY y2.zip) ilv
WHERE ilv.id=y.id;
(或者您可以使用max-concat trick)
<强>更新强>
答案 4 :(得分:0)
如果我使用如下,有什么问题吗?
select distinct zip,name,id from student;
答案 5 :(得分:0)
尝试使用
Select Distinct(zip),id,name group by zip;
答案 6 :(得分:-2)
select id, name, distinct(zip) from student;