检索查询中的最新日期

时间:2014-10-21 10:33:05

标签: php mysql database

我能够修复以前的查询,但结果检索包含重复项。我想要检索最新的记录。

例如:

   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

2 个答案:

答案 0 :(得分:2)

  1. 无需进行子选择
  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
)

这不会获取您想要的所有详细信息。但是为您提供了可能必须运行的查询的基本概念。