如何使用带有Order by子句和限制的MySQL计数(*)?

时间:2017-05-26 09:42:47

标签: mysql

请考虑下表。

+-----+--------------+---------------------+
| id  | account_name | date_time           |
+-----+--------------+---------------------+
| 123 | John         | 2017-07-01 12:12:12 |
+-----+--------------+---------------------+
| 124 | Henry        | 2017-07-02 12:12:12 |
+-----+--------------+---------------------+
| 126 | Vlad         | 2017-07-03 12:12:12 |
+-----+--------------+---------------------+

如果我执行以下查询,

SELECT id FROM table_name order by date_time desc limit 0,1;

我得到输出(非常好)

+-----+
| id  |
+-----+
| 126 |
+-----+

现在,如果我执行查询,

SELECT count(*), id FROM table_name ORDER BY date_time DESC LIMIT 0,1;

我得到了输出

+-------+-----+
| count | id  |
+-------+-----+
| 3     | 123 |
+-------+-----+

请注意,在选择count(*)时,查询不会考虑order。这是什么问题? 我想要以下回复。

+-------+-----+
| count | id  |
+-------+-----+
| 3     | 126 |
+-------+-----+

2 个答案:

答案 0 :(得分:1)

你可以使用这样的查询:

SELECT count(*), max(id) AS id
FROM table_name
ORDER BY id DESC
LIMIT 0,1;

答案 1 :(得分:1)

让我们尝试以下声明:

SELECT (SELECT COUNT(*) FROM `table_name`) 'Count', id
  FROM `table_name`
  ORDER BY id DESC LIMIT 0,1;