我希望能够按升序或降序对评论进行排序。我尝试在"order by“子句中再次执行聚合,但不起作用。我还尝试在子查询之外进行排序,这使我可以使用别名注释,但只能在第0行和第10行之间进行排序。
此查询是一个更大查询的较小版本。
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-10 02:07:56
在最新的编辑之后,怀疑你想要这样的东西
;WITH oc AS
(
SELECT [order],
COUNT([order]) AS order_count
FROM order_comment
GROUP BY [order]
), occ AS
(
SELECT o.*,
order_count AS comment,
ROW_NUMBER() OVER (ORDER BY order_count DESC) AS [rownum]
FROM [order] o
INNER JOIN oc ON oc.[order] = o.id
)
SELECT *
FROM occ
WHERE [rownum] BETWEEN 0 AND 10
ORDER BY [rownum]在order_comment中,INNER JOIN将排除任何没有子行的行
发布于 2012-04-06 07:20:18
我假设您不知道可以将OVER clause与聚合函数一起使用。
COUNT(order) OVER(PARTITION BY id) AS [comment]
....
ORDER BY [comment]发布于 2012-04-06 07:53:02
在SQL Server中,您可以按查询中的列号排序,就像在order by 1 more info here http://blog.sqlauthority.com/2010/12/27/sql-server-order-by-columnname-vs-order-by-columnnumber/中一样
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
ORDER BY 1https://stackoverflow.com/questions/10037245
复制相似问题