Mysql 如何从数据库中提取特定列的最新行?

Mysql 如何从数据库中提取特定列的最新行?,mysql,sql,Mysql,Sql,我在数据库中有下表 +----+---------+---------------------+-----------+ | id | user_id | timeid | course_id | +----+---------+---------------------+-----------+ | 02 | 2 | 2016-01-27 19:24:17 | 14 | | 03 | 2 | 2016-02-27 19:24:27

我在数据库中有下表

+----+---------+---------------------+-----------+
| id | user_id | timeid              | course_id |
+----+---------+---------------------+-----------+
| 02 |       2 | 2016-01-27 19:24:17 |        14 |
| 03 |       2 | 2016-02-27 19:24:27 |        15 |
| 04 |       2 | 2016-03-27 19:24:37 |        16 |
| 05 |       3 | 2016-01-27 19:24:17 |        19 |
| 06 |       3 | 2016-02-27 19:24:27 |        18 |
| 07 |       3 | 2016-03-27 19:24:37 |        17 |
+----+---------+---------------------+-----------+
如何仅为每个用户id提取按
timeid
排序的最新行

换言之:

| 04 |       2 | 2016-03-27 19:24:37 |        16 |
| 07 |       3 | 2016-03-27 19:24:37 |        17 |

您可以使用mysql查询,如

SELECT id, user_id, timeid, course_id FROM tablename ORDER BY timeid DESC GROUP BY user_id;

您可以使用mysql查询,如

SELECT id, user_id, timeid, course_id FROM tablename ORDER BY timeid DESC GROUP BY user_id;

您可以使用以下查询:

SELECT  t1.id, t1.user_id, t1.timeid, t1.course_id
FROM mytable as t1
JOIN (
   SELECT user_id, MAX(timeid) AS timeid
   FROM mytable
   GROUP BY user_id
) AS t2 ON t1.user_id = t2.user_id AND t1.timeid = t2.timeid

t2
是一个派生表,其中包含每个
用户id
的最新
timeid
值。如果将原始表加入到该表中,则可以返回具有最新每组值的记录的所有字段。

您可以使用以下查询:

SELECT  t1.id, t1.user_id, t1.timeid, t1.course_id
FROM mytable as t1
JOIN (
   SELECT user_id, MAX(timeid) AS timeid
   FROM mytable
   GROUP BY user_id
) AS t2 ON t1.user_id = t2.user_id AND t1.timeid = t2.timeid

t2
是一个派生表,其中包含每个
用户id
的最新
timeid
值。如果将原始表加入到该表中,则可以返回具有最新每组值的记录的所有字段。

一种简单的方法是使用
=
和相关子查询:

select t.*
from t
where t.timeid = (select max(t2.timeid) from t t2 where t2.user_id = t.user_id);

一种简单的方法是使用
=
和相关子查询:

select t.*
from t
where t.timeid = (select max(t2.timeid) from t t2 where t2.user_id = t.user_id);

这里有一个错误,我假设应该是
和t1.timeid=t2.timeid
而不是
和t1.timeid=t2.user\u id
。这里有一个错误,我假设应该是
和t1.timeid=t2.timeid
而不是
和t1.timeid=t2.user\u id