根据字段从mysql表中选择唯一记录
我在MySQL中有一个存储注册信息的表 我需要根据email字段和ID字段选择所有行,但只选择最新的行 我的桌子: 我需要根据字段从mysql表中选择唯一记录,mysql,Mysql,我在MySQL中有一个存储注册信息的表 我需要根据email字段和ID字段选择所有行,但只选择最新的行 我的桌子: 我需要 select * from yourTablename where (id,email) in (select max(id),email from yourTablename group by email); 另一种具有内部联接的方法:(由Tim建议) 谢谢您的回复 使用 SELECT t1.* FROM yourTable t1 INNER JO
select *
from yourTablename
where (id,email) in
(select max(id),email from yourTablename group by email);
另一种具有内部联接的方法:(由Tim建议)
谢谢您的回复 使用
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT email, MAX(name) AS max_name
FROM yourTable
GROUP BY email
) t2
ON t1.email = t2.email AND
t1.name = t2.max_name;
很好
谢谢将表格和数据以文本形式发布,以了解以下任何答案解决/帮助您解决问题的原因,然后请将其作为答案/投票表决。这对未来的访问者来说真的很有帮助。使用内部联接而不是子查询来获得最佳结果。@TimBiegeleisen现在可以了吗?是的,这就是我之前试图写的,最终弄糟了。再加上你的答案。事实上,还不清楚他们是想要max id还是max name。谢谢。问题是他想要max id,因此我使用了id。但在他的回答中,他使用了max name这个名称恰好适用于精确的样本数据,因为
name2
恰好大于name1
,但在实践中,这可能行不通。我想只有当名称也按递增顺序时,它才会起作用。交换名称1和名称2,您将得到不同的结果。除非您希望行具有max(name)而不是max(id),否则这将不起作用。
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT email, MAX(name) AS max_name
FROM yourTable
GROUP BY email
) t2
ON t1.email = t2.email AND
t1.name = t2.max_name;