根据多个不同的值返回mysql行

时间:2015-01-14 16:52:12

标签: mysql sql distinct

我的表格包含用户的信息,并具有以下属性:namesurnamedate_of_birth。我想返回具有不同name和不同surname以及不同date_of_birth的行。我知道查询类似于GROUP BYDISTINCT

这是一个例子

   USERS

id | name     | surname   | date_of_birth
---+----------+-----------+-----------
1  | Mark     | Smith     | 01.01.1990.
2  | Ana      | Smith2    | 01.01.1991.
3  | Ana      | Smith2    | 01.01.1991.
4  | Mark     | Smith2    | 01.01.1991.

  RESULT

id | name     | surname   | date_of_birth
---+----------+-----------+-----------
1  | Mark     | Smith     | 01.01.1990.
3  | Ana      | Smith2    | 01.01.1991.
4  | Mark     | Smith2    | 01.01.1991.

行必须在所有三个属性中具有不同的值才能作为结果选择。

2 个答案:

答案 0 :(得分:1)

使用DISTINCT消除重复的行:

SELECT DISTINCT name
     , surname
     , date_of_birth
FROM USERS

答案 1 :(得分:0)

如果您想SELECTid以外的所有内容,那么您可以在DISTINCT中使用SELECT关键字,就像 @Rocket Hazmat 建议:

SELECT DISTINCT `name`
     , `surname`
     , `date_of_birth` 
FROM `table`

但是如果您还希望在所有重复值之间显示第一个(最早,最小id,如您在示例中所示),那么你应该使用以下查询:

SELECT MIN(`id`)
     , `name`
     , `surname`
     , `date_of_birth`
FROM `table` 
GROUP BY `name`
       , `surname`
       , `date_of_birth`