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

Returning mysql rows depending on multiple different values

我有 table,其中包含我的用户信息并具有以下属性:namesurnamedate_of_birth。我想要 return 具有不同 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.

要选择的所有三个属性中的行必须具有不同的值。

如果你想要 SELECTid 之外的所有内容,那么你可以在 SELECT 中使用 DISTINCT 关键字,就像 @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`

使用DISTINCT消除重复行:

SELECT DISTINCT name
     , surname
     , date_of_birth
FROM USERS