【问题标题】:SQL DISTINCT for one field whilst still selecting others一个字段的 SQL DISTINCT,同时仍然选择其他字段
【发布时间】:2015-01-29 11:35:23
【问题描述】:

寻找一种仅选择具有唯一电子邮件地址的行的方法,但我还需要其他字段数据。

目前有这个:

$mainQuery = $mysqli->query("SELECT DISTINCT(`email`) FROM valuations");

这使我的结果从 9208 下降到 7848,所以效果很好。

我有 3 或 4 个表,每个表大约有 10000 行,我们现在希望创建一个“客户”表。我正在编写一个脚本来将所有这些行“导入”到客户表中。

我需要额外的行是例如'username' 'number' 'title' 等

这些不需要是唯一的,只需电子邮件即可。

我试过了:

$mainQuery = $mysqli->query("SELECT DISTINCT(`email`),username FROM valuations");

但是返回的行数比以前多,我应该怎么做呢?

谢谢。

【问题讨论】:

  • DISTINCT 不是函数。如果有多个用户名与一封电子邮件相关联,您希望返回哪一个。请注意,“没关系”的典型新手反应通常表明设计不佳。应该很重要!
  • 在某处的示例中看到它...将其更改为 DISTINCT 电子邮件。
  • 您在寻找类似GROUP BY 的东西吗? SELECT * FROM valuations GROUP BY email
  • 哦,当您说“10,000 个字段”时,您的意思是“10,000 行”,对吧?!?!
  • @user2921557 我可以向你保证,不是!!!

标签: php mysql distinct


【解决方案1】:

使用group by:

SELECT email, MIN(username)
FROM valuations
GROUP BY email;

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2012-09-16
    • 2014-08-17
    • 1970-01-01
    相关资源
    最近更新 更多