MySQL 使用 DISTINCT 返回其他列

标签 mysql

在查询方面需要一点帮助。

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/

相关文章:

MySQl:如何对 ('year' )具有日期格式的列进行分组,忽略月份和日期

mysql - 为什么 SELECT * FROM table WHERE value != '1' 不返回 NULL 字段?

php - 使用 AJAX 更新 MySQL 表

mysql - SQL 是否可以从 "list"进行选择?里面的例子

mysql - 将值从 table_a 复制/更新到 table_b 的另一行,其中 table_a.id = table_b.id AND table_a.name = table_b.name

mysql - 如何使用sql查询结果来使用date_add

带有计数函数的 MySQL case 语句

php - 如何从 php 获取 JSON 数据并显示到 android 中的 textview?

mysql - 如何在 Rails 中有效地获取这些代理 ID

mysql - "ADD AUTO_INCREMENT value"在 phpMyAdmin 中是什么意思