0

非常快的一个:

我以前做过,但现在脑子有点空白。

SELECT max(id) as id, username, email 
FROM user_info 
WHERE username!='' 
GROUP by id,email

不幸的是,这不起作用。它将选择最大 id,但不会选择该行中的相应数据。

4

2 回答 2

1

如果每个电子邮件地址有多个 id,则只能使用max(id)电子邮件并按电子邮件分组。

SELECT max(id) as id, username, email 
FROM user_info 
WHERE username <> '' 
GROUP by email, username 

您可以使用将返回子查询中的最大 id 的子查询,然后使用它在表上自我加入以返回最新的 id、用户名和电子邮件:

SELECT u.id, u.username, u.email 
FROM user_info u
INNER JOIN
(
  select max(id) maxid, email
  from user_info
  where username <> '' 
  group by email
) u2
  on u.id = u2.maxid

请参阅带有演示的 SQL Fiddle

于 2012-12-06T14:46:19.880 回答
0
Select DISTINCT(email), MAX(id)
FROM user_info
GROUP by email
ORDER BY id DESC
于 2012-12-06T16:19:31.010 回答