Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据字段从mysql表中选择唯一记录_Mysql - Fatal编程技术网

根据字段从mysql表中选择唯一记录

根据字段从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

我在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 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;