为什么我的 MySQL 查询没有正确排序?
Why is my MySQL query not ordering correctly?
在下面的查询中,我试图按 fc.order
升序排列结果:
SELECT *, count(*) AS threads_count FROM (
SELECT fc.uuid AS category_uuid, fc.name, fc.description, fc.order, fc.icon,
u.uuid AS user_uuid, u.username, u.avatar
FROM forum_categories AS fc
INNER JOIN forum_threads AS ft ON fc.id = ft.forum_category_id
INNER JOIN users as u ON ft.created_by = u.id
ORDER BY fc.order ASC, ft.created_at DESC
) AS tmp_table GROUP BY category_uuid
但是它似乎不起作用。以下是上述查询结果的屏幕截图:
如何获得按 order
列排序的结果?
SELECT t1.*, count(t1.*) AS threads_count FROM
(
SELECT fc.uuid AS category_uuid, fc.name, fc.description, fc.order, fc.icon,
u.uuid AS user_uuid, u.username, u.avatar
FROM forum_categories AS fc
INNER JOIN forum_threads AS ft ON fc.id = ft.forum_category_id
INNER JOIN users as u ON ft.created_by = u.id
) AS tmp_table t1
GROUP BY category_uuid
ORDER BY t1.order ASC, t1.created_at DESC
好的,谢谢大家,但我明白了:
SELECT * FROM (
SELECT *, count(*) AS threads_count FROM (
SELECT fc.uuid AS category_uuid, fc.name, fc.description, fc.order, fc.icon,
u.uuid AS user_uuid, u.username, u.avatar
FROM forum_categories AS fc
INNER JOIN forum_threads AS ft ON fc.id = ft.forum_category_id
INNER JOIN users as u ON ft.created_by = u.id
ORDER BY ft.created_at DESC
) AS t1 GROUP BY category_uuid
) as t2 ORDER BY `order`
在下面的查询中,我试图按 fc.order
升序排列结果:
SELECT *, count(*) AS threads_count FROM (
SELECT fc.uuid AS category_uuid, fc.name, fc.description, fc.order, fc.icon,
u.uuid AS user_uuid, u.username, u.avatar
FROM forum_categories AS fc
INNER JOIN forum_threads AS ft ON fc.id = ft.forum_category_id
INNER JOIN users as u ON ft.created_by = u.id
ORDER BY fc.order ASC, ft.created_at DESC
) AS tmp_table GROUP BY category_uuid
但是它似乎不起作用。以下是上述查询结果的屏幕截图:
如何获得按 order
列排序的结果?
SELECT t1.*, count(t1.*) AS threads_count FROM
(
SELECT fc.uuid AS category_uuid, fc.name, fc.description, fc.order, fc.icon,
u.uuid AS user_uuid, u.username, u.avatar
FROM forum_categories AS fc
INNER JOIN forum_threads AS ft ON fc.id = ft.forum_category_id
INNER JOIN users as u ON ft.created_by = u.id
) AS tmp_table t1
GROUP BY category_uuid
ORDER BY t1.order ASC, t1.created_at DESC
好的,谢谢大家,但我明白了:
SELECT * FROM (
SELECT *, count(*) AS threads_count FROM (
SELECT fc.uuid AS category_uuid, fc.name, fc.description, fc.order, fc.icon,
u.uuid AS user_uuid, u.username, u.avatar
FROM forum_categories AS fc
INNER JOIN forum_threads AS ft ON fc.id = ft.forum_category_id
INNER JOIN users as u ON ft.created_by = u.id
ORDER BY ft.created_at DESC
) AS t1 GROUP BY category_uuid
) as t2 ORDER BY `order`