我有这个数据的表格:
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
我有两个问题:
我想用查询输出这个(没有重复名称和爱好的原文):
id name hobbie phone ------------------------------------------ 1 user1 cooking 123 3 user1 surfing 123 4 user3 drawing 456
提前致谢。
答案 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