如何从mysql中的数据集中获取最完整的数据记录?

时间:2019-06-05 13:33:57

标签: mysql

我正在尝试返回一组记录,这些记录在指定的字段中包含最多的数据 该表的主键是许可证密钥,因此用户可以注册多个许可证-不需要用户帐户,因此我们无法将单个用户帐户与多个许可证建立一对多关系(不幸!)

有时用户会给我们最少的信息。例如名字,姓氏,电子邮件。有时他们给我们更多。一个FacebookID和出生日期。

我已经尝试按照以下查询在电子邮件地址上进行分组并在FBID上执行order by子句,但是我对MySQL的了解感到困惑,现在我想知道是否有可能!?

SELECT firstname, lastname, email, FBID, DOB
FROM users
GROUP BY email
ORDER BY FBID IS NULL;

我想从始终按电子邮件地址分组的集合中提取全部数据:

John, Smith, john@smith.com, NULL, NULL
John, Smith, john@smith.com, 123456, NULL
John, Smith, john@smith.com, NULL, '1/1/1990'
Fred, Jones, fred@jones.com, NULL, NULL

我要返回的内容:

John, Smith, john@smith.com, 123456, '1/1/1990'
Fred, Jones, fred@jones.com, NULL, NULL

谢谢!

1 个答案:

答案 0 :(得分:1)

当不为null时,您可以尝试使用aggreagtion函数来提取值

  select  firstname, lastname, email, max(FBID), max(DOB)
  from  users
  group by firstname, lastname, email
  order by  firstname, lastname, email