我希望能够按升序或降序对[comment]进行排序。我已经尝试在“order by”子句中再次执行聚合,但那不起作用。我也尝试在子查询之外进行排序,让我使用别名[comment],但只排序在0和10行之间。SQL Server ORDER BY [aggregation] DESC/ASC
此查询是更大的查询的较小版本。
SELECT *
FROM (SELECT ISNULL((SELECT COUNT("order")
FROM order_comment
WHERE "order" = "order"."id"
GROUP BY "order"), 0) AS [comment],
Row_number() OVER (ORDER BY "order"."id" DESC) AS [rownum]
FROM [order]
WHERE ISNULL((SELECT COUNT("order")
FROM order_comment
WHERE "order" = "order"."id"
GROUP BY "order"), 0) > 0) AS [filter]
WHERE [rownum] BETWEEN 0 AND 10
所以在MySQL的简单!
SELECT Ifnull((SELECT COUNT(`order`)
FROM order_comment
WHERE `order` = `order`.`id`
GROUP BY `order`), 0) AS `comment`
FROM `order`
HAVING `comment` > 0
ORDER BY `comment` DESC
LIMIT 0, 10
请勿在子查询中使用您的位置。将主逻辑放入子查询中,然后对子查询的结果进行排序(按顺序排列)并过滤(其中)。 – 2012-04-05 23:25:20
@zespri这会搞乱[rownum]。假设只有一行被返回,[rownum]可能是40,当你在0和10之间进行选择时,这是行不通的。这是在这之前的一个主要问题。 – 2012-04-05 23:31:50
即使没有排序,它也能如何工作?如果它是40,那么你的位置会将其过滤出来并且不会被返回。 – 2012-04-05 23:41:15