Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检索查询中最近的日期_Php_Mysql_Database - Fatal编程技术网

Php 检索查询中最近的日期

Php 检索查询中最近的日期,php,mysql,database,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 | ste

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

例如:

   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 1,因为日期早于ID 3日期

如何将其添加到下面的查询中

   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
  • 无需再选择
  • 添加:
    ORDER BY users.date DESC LIMIT 1
    通过这种方式,您可以按日期对列表进行排序,并仅返回“first elemet”,即具有“最大/最新”日期的列表

  • 看起来您希望为每个用户获取最新的行

    这里有一个查询可以做到这一点。(它也使用子查询。但我不理解使用子查询进行concat的必要性)


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

    (1)为什么您仍然使用子查询?(2) 为什么
    concat()
    中的语法错误没有修复?我已经修复了查询,我必须使用子查询!除了日期问题之外,是否还有其他原因使用子查询?我有一个理论解决方案,涉及使用
    DISTINCT
    ORDER BY
    关键字。我仍然不明白为什么需要返回ID为2和3的行。最新的是ID为3的唯一一行。如果有重复的电子邮件地址,它将返回其最近的日期!我需要subselect,因为有多个列需要合并成一个列,为什么不能在第一个查询中进行concat呢?比如,
    选择firstname、lastname、email、CONCAT(首选项,,”)作为用户。pref
    ?有多个首选项列,首选项1、首选项2、首选项3、首选项4谢谢,我已将其添加到问题中。这需要很长时间,直到现在查询还没有返回任何结果。您忘记了不同的部分。添加
    DISTINCT(users.email)
    。难怪查询要花很长时间。另外,它应该是
    MAX(u.date)
    Sorry。DISTINCT不是一个函数。这是一个关键词。更新了答案。
    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
    )