SELECT DISTINCT多个字段并显示全部

时间:2015-04-09 15:11:48

标签: mysql select distinct multiple-columns

我有这个数据的表格:

id       name        hobbie          phone
------------------------------------------
1        user1       cooking         123
2        user1       cooking         123
3        user1       surfing         123
4        user3       drawing         456

我正在尝试选择具有相同"名称"的所有行。即使他们有不同的爱好。我试过SELECT DISTINCT name FROM mytable;打印出这个:

 name 
------
 user1
 user3

我有两个问题:

  1. 我如何能够同时区分姓名和爱好?
  2. 我如何输出爱好和手机?
  3. 我想用查询输出这个(没有重复名称和爱好的原文):

    id       name        hobbie          phone
    ------------------------------------------
    1        user1       cooking         123
    3        user1       surfing         123
    4        user3       drawing         456
    

    提前致谢。

3 个答案:

答案 0 :(得分:0)

如果您正在查看数据集这个小而且优化并不是真正关注的问题,那么这将有效

Select * from Users where id in (
(SELECT MAX(id) as id FROM Users GROUP BY name, hobbie)

答案 1 :(得分:0)

您可以使用group by获取所需的输出:

select min(id), name, hobbie,  phone
from table t
group by name, hobbie, phone;

你所描述的更像是:

select min(id), name, hobbie, min(phone) as phone
from table t
group by name, hobbie;

答案 2 :(得分:0)

答案1.您可以使用以下查询以名称和hobbie进行区分

SELECT DISTINCT name, hobbie FROM mytable;

答案2.您可以使用以下查询输出爱好和手机

SELECT t.*
FROM mytable t
INNER JOIN
  ( SELECT MAX(id) AS id,
                      phone,
                      name,
                      hobbie
                      FROM mytable
                          GROUP BY phone,
                          name,
                          hobbie) t2 ON t.id = t2.id