Mysql 选择不同的多个字段并显示所有字段

Mysql 选择不同的多个字段并显示所有字段,mysql,select,distinct,multiple-columns,Mysql,Select,Distinct,Multiple Columns,我有一个包含以下数据的表格: id name hobbie phone ------------------------------------------ 1 user1 cooking 123 2 user1 cooking 123 3 user1 surfing 123 4 user3 drawi

我有一个包含以下数据的表格:

id name hobbie phone ------------------------------------------ 1 user1 cooking 123 2 user1 cooking 123 3 user1 surfing 123 4 user3 drawing 456 我有两个问题:

我怎么能同时用名字和霍比来区分呢? 我怎样才能输出爱好和手机呢? 我想将其与原始查询一起输出,不重复名称和爱好:

id name hobbie phone ------------------------------------------ 1 user1 cooking 123 3 user1 surfing 123 4 user3 drawing 456
提前感谢。

如果您正在查看一个如此小的数据集,而优化并不是真正需要考虑的问题,那么这将是可行的

Select * from Users where id in (
(SELECT MAX(id) as id FROM Users GROUP BY name, hobbie)
您可以使用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;

答复1。您可以使用以下查询按名称和hobbie进行区分

SELECT DISTINCT name, hobbie FROM mytable;
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
答复2。您也可以使用以下查询输出爱好和手机

SELECT DISTINCT name, hobbie FROM mytable;
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