如何从mysql表中获取不同的记录?

时间:2011-05-24 11:35:42

标签: mysql distinct

我有一个学生这样的表

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

我想获取所有记录,但邮政编码不应重复。因此,如果是上表记录,则应提取记录No 1和2。不会获取第3号记录,因为它的邮政编码已经在第1号记录中

7 个答案:

答案 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

<强>更新

Oracle现在已从链接页面中删除了最大连接技巧 - 但described位于其他on internet

答案 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;