d3b*_*g3r 3 mysql sql database
嗨,我有一个mysql查询,它将返回post_id最大状态计数,它当前显示的结果
POST_ID
3
Run Code Online (Sandbox Code Playgroud)
Mysql表:
(`post_id`, `user_id`, `status`, `date_created`)
(2, 2, 'funny', 20121022120627)
(2, 3, 'lame', 20121023120627)
(3, 1, 'useful', 20121023120627)
(3, 3, 'lame', 20121023120627)
(3, 4, 'useful', 20121023120627)
(4, 4, 'useful', 20121024120627)
Run Code Online (Sandbox Code Playgroud)
但我需要的结果是,在desc order.if 2结果具有相同数字时显示从max到min的计数,那么最高结果将基于最新的date_created类似这样
POST_ID
3
2
4
Run Code Online (Sandbox Code Playgroud)
我目前的疑问是
SELECT post_id
FROM tableName
GROUP BY post_ID
HAVING COUNT(*) =
(
SELECT MAX(x.counts)
FROM
(
SELECT post_id, COUNT(*) counts
FROM tableName
GROUP BY post_id
) x
)
Run Code Online (Sandbox Code Playgroud)
但我需要的结果是,在desc order.if 2结果具有相同数字时显示从max到min的计数,那么最高结果将基于最新的date_created.
你需要ORDER BY COUNT(*) DESC, date_created DESC这样:
SELECT post_id
FROM tableName
GROUP BY post_ID
HAVING COUNT(*) =
(
SELECT MAX(x.counts)
FROM
(
SELECT post_id, COUNT(*) counts
FROM tableName
GROUP BY post_id
) x
)
ORDER BY COUNT(*) DESC, date_created DESC
Run Code Online (Sandbox Code Playgroud)
更新1
试试这个,
SELECT post_id
FROM tableName
GROUP BY post_ID
ORDER BY COUNT(*) DESC, MAX(`date_created`) DESC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
483 次 |
| 最近记录: |