我希望能夠按升序或降序對[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