我能够修复以前的查询,但结果检索包含重复项。我想要检索最新的记录。
例如:
id | firstname | lastname | email | date
1 | steven | smith | steven@gmail.com 2013-06-10 04:01:25
2 | Bill | Johnson | bill@gmail.com | 2014-06-10 04:01:25
3 | steven | smith | steven@gmail.com | 2014-10-10 12:01:25
返回结果应该是ID为2和3的行 由于日期早于ID 3日期
,因此不应返回ID 1如何将此添加到下面的查询中?
SELECT
users.firstname,
users.lastname,
DISTINCT(users.email),
users.pref
FROM (
SELECT
users.firstname,
users.lastname,
users.email,
users.status,
users.active,
CONCAT(
users.preference_1, ',',
users.preference_2, ',',
users.preference_3
) AS pref
FROM users
) AS users
WHERE users.status = 1
AND users.active = 1
AND users.date = (
SELECT MAX(u.date) FROM users AS u WHERE u.email = users.email
)
LIMIT 10000
答案 0 :(得分:2)
ORDER BY users.date DESC LIMIT 1
这样您按日期对列表进行排序并仅返回“1st elemet”,即“最大/最新”日期答案 1 :(得分:0)
好吧,看起来你想为每个用户获取最新的一行。
这是一个可以执行此操作的查询。 (它也使用子查询。我不明白使用子查询连续的必要性)
SELECT DISTINCT us.email, us.preference FROM users AS us WHERE us.date = (
SELECT MAX(u.date) FROM users AS u WHERE u.email = us.email
)
这不会获取您想要的所有详细信息。但是为您提供了可能必须运行的查询的基本概念。