在查询方面需要一点帮助。
SELECT id,email FROM user_info WHERE username!=''
AND email='example@gmail.com'
GROUP BY email ORDER BY id DESC LIMIT 1
目前它所做的是获取一个不同的电子邮件,而不是该电子邮件下帐户的最新 ID。
最佳答案
听起来您可以将聚合应用于 id
字段,它将返回每封电子邮件的最新 ID:
SELECT Max(id), email
FROM user_info
WHERE username!=''
AND email='example@gmail.com'
GROUP BY email
不幸的是,当您在没有聚合的情况下应用 GROUP BY
时,无法保证将返回什么 id
,除非您指定选择最大值。
如果你想返回与 max(id)
关联的用户名,那么你可以使用子查询:
SELECT i.MaxId,
i.email,
u.username
FROM user_info u
inner join
(
select max(id) MaxId, email
from user_info
WHERE username!=''
AND email='example@gmail.com'
group by email
) i
on u.id = i.maxid
and u.email = i.email
WHERE username!=''
AND email='example@gmail.com';
关于MySQL 使用 DISTINCT 返回其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14821062/