Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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
MySQL按日期排序的相关子查询&;时间_Mysql_Sql_Greatest N Per Group_Correlated Subquery - Fatal编程技术网

MySQL按日期排序的相关子查询&;时间

MySQL按日期排序的相关子查询&;时间,mysql,sql,greatest-n-per-group,correlated-subquery,Mysql,Sql,Greatest N Per Group,Correlated Subquery,下午好,, 我是处女,请对我宽容点。我很难从数据库中检索到我需要的信息,我相信相关子查询可能是答案,但我不确定 我需要的所有信息都来自一个表: ╔══════╦══════════════╦══════════════╦════════════╦══════╦═════════════════════╦═════════════╗ ║ COL1 ║ COL2 ║ FILENAME ║ COL4 ║ COL5 ║ DATETIME ║

下午好,, 我是处女,请对我宽容点。我很难从数据库中检索到我需要的信息,我相信相关子查询可能是答案,但我不确定

我需要的所有信息都来自一个表:

╔══════╦══════════════╦══════════════╦════════════╦══════╦═════════════════════╦═════════════╗
║ COL1 ║     COL2     ║   FILENAME   ║    COL4    ║ COL5 ║      DATETIME       ║    COL7     ║
╠══════╬══════════════╬══════════════╬════════════╬══════╬═════════════════════╬═════════════╣
║    2 ║ generaluser1 ║ shared2.txt  ║ Shared     ║ XP1  ║ 2013-04-04 19:23:09 ║ Checked In  ║
║    3 ║ generaluser1 ║ shared2.txt  ║ Shared     ║ XP1  ║ 2013-04-04 19:24:06 ║ Checked Out ║
║    4 ║ generaluser1 ║ shared2.txt  ║ Shared     ║ XP1  ║ 2013-04-04 19:24:20 ║ Checked In  ║
║    5 ║ generaluser1 ║ restdoc3.txt ║ Restricted ║ XP1  ║ 2013-04-04 19:25:04 ║ Checked In  ║
║    6 ║ generaluser1 ║ restdoc3.txt ║ Restricted ║ XP1  ║ 2013-04-04 19:26:08 ║ Checked Out ║
║    7 ║ generaluser1 ║ restdoc3.txt ║ Restricted ║ XP1  ║ 2013-04-04 19:26:21 ║ Checked In  ║
║    8 ║ generaluser1 ║ shared2.txt  ║ Shared     ║ XP1  ║ 2013-04-04 19:26:51 ║ Checked Out ║
║    9 ║ generaluser1 ║ restdoc3.txt ║ Restricted ║ XP1  ║ 2013-04-04 19:28:41 ║ Checked Out ║
║   10 ║ generaluser1 ║ restdoc3.txt ║ Restricted ║ XP1  ║ 2013-04-04 19:31:01 ║ Checked In  ║
║   11 ║ generaluser2 ║ restdoc3.txt ║ Restricted ║ XP2  ║ 2013-04-04 19:31:13 ║ Checked Out ║
║   12 ║ generaluser1 ║ shared2.txt  ║ Shared     ║ XP1  ║ 2013-04-04 19:33:03 ║ Checked In  ║
║   13 ║ generaluser2 ║ restdoc3.txt ║ Restricted ║ XP2  ║ 2013-04-04 19:33:28 ║ Checked In  ║
║   14 ║ generaluser2 ║ restdoc4.txt ║ Restricted ║ XP2  ║ 2013-04-04 19:33:36 ║ Checked In  ║
╚══════╩══════════════╩══════════════╩════════════╩══════╩═════════════════════╩═════════════╝
我要做的是为每个文档名(col2)检索一行,其中datetime是最新的

因此,我想为上述行重新筛选/输出的结果仅为:

╔══════╦══════════════╦══════════════╦════════════╦══════╦═════════════════════╦════════════╗
║ COL1 ║     COL2     ║   FILENAME   ║    COL4    ║ COL5 ║      DATETIME       ║    COL7    ║
╠══════╬══════════════╬══════════════╬════════════╬══════╬═════════════════════╬════════════╣
║   12 ║ generaluser1 ║ shared2.txt  ║ Shared     ║ XP1  ║ 2013-04-04 19:33:03 ║ Checked In ║
║   13 ║ generaluser2 ║ restdoc3.txt ║ Restricted ║ XP2  ║ 2013-04-04 19:33:28 ║ Checked In ║
║   14 ║ generaluser2 ║ restdoc4.txt ║ Restricted ║ XP2  ║ 2013-04-04 19:33:36 ║ Checked In ║
╚══════╩══════════════╩══════════════╩════════════╩══════╩═════════════════════╩════════════╝
我可以为我选择的文档或所有文档获取最新行,但不能为每个唯一文档获取最新行


提前感谢所有帮助我的人

假设包含文件名的列名是
FileName
,包含日期和时间的列是
DateTime

SELECT  a.*
FROM    TableName a
        INNER JOIN
        (
            SELECT  FileName, MAX(DateTime) max_date
            FROM    TableName
            GROUP   BY FileName
        ) b ON a.FileName = b.FileName AND
                a.DateTime = b.max_Date
输出

╔══════╦══════════════╦══════════════╦════════════╦══════╦═════════════════════╦════════════╗
║ COL1 ║     COL2     ║   FILENAME   ║    COL4    ║ COL5 ║      DATETIME       ║    COL7    ║
╠══════╬══════════════╬══════════════╬════════════╬══════╬═════════════════════╬════════════╣
║   12 ║ generaluser1 ║ shared2.txt  ║ Shared     ║ XP1  ║ 2013-04-04 19:33:03 ║ Checked In ║
║   13 ║ generaluser2 ║ restdoc3.txt ║ Restricted ║ XP2  ║ 2013-04-04 19:33:28 ║ Checked In ║
║   14 ║ generaluser2 ║ restdoc4.txt ║ Restricted ║ XP2  ║ 2013-04-04 19:33:36 ║ Checked In ║
╚══════╩══════════════╩══════════════╩════════════╩══════╩═════════════════════╩════════════╝
查询:

SELECT a.*
FROM TableName a
WHERE a.DateTime = (SELECT MAX(b.DateTime)
                    FROM TableName b
                    WHERE b.FileName = a.FileName)
结果:

| COL1 |         COL2 |     FILENAME |       COL4 | COL5 |                     DATETIME |       COL7 |
------------------------------------------------------------------------------------------------------
|   12 | generaluser1 |  shared2.txt |     Shared |  XP1 | April, 04 2013 19:33:03+0000 | Checked In |
|   13 | generaluser2 | restdoc3.txt | Restricted |  XP2 | April, 04 2013 19:33:28+0000 | Checked In |
|   14 | generaluser2 | restdoc4.txt | Restricted |  XP2 | April, 04 2013 19:33:36+0000 | Checked In |

像梦一样工作。我不知道联接在单个表上有任何用处。非常感谢,非常感谢。