Mysql 我可以使用SELECT子句中子查询返回的列对结果进行排序吗?
使用下面的示例,这不是确切的代码,只是我试图实现的一个示例: 查询将用于返回访问量最大的五个页面,按该页面已注册的访问量计算Mysql 我可以使用SELECT子句中子查询返回的列对结果进行排序吗?,mysql,Mysql,使用下面的示例,这不是确切的代码,只是我试图实现的一个示例: 查询将用于返回访问量最大的五个页面,按该页面已注册的访问量计算 SELECT page_instance.name AS 'page name', /* Sub Query I wish to sort by */ ( SELECT COUNT(*) FROM visitor_event WHERE page_instance.id = visitor_ev
SELECT
page_instance.name AS 'page name',
/* Sub Query I wish to sort by */
(
SELECT COUNT(*)
FROM visitor_event
WHERE page_instance.id = visitor_event.item_id
) AS 'visit count'
FROM item_event
LEFT JOIN visitor_event_type ON visitor_event_type.id = visitor_event_type_id
LEFT JOIN page_instance ON page_instance.id = visitor_event.item_id
LEFT JOIN page ON page.id = page_instance.page_id
WHERE visitor_event_type.handle = 'viewed'
AND page_instance.name != 'NULL'
GROUP BY page.id
ORDER BY 'visit count' DESC /* Where its going wrong */
LIMIT 5
当前,查询运行时没有错误,但不会按“访问次数”列进行排序
我见过将子查询放在FROM子句中的类似查询。我不理解这样做的原因,因为我可能希望其他列有其他子查询(用于max/min结果等)。我并不反对这个想法,我只是不明白为什么要这样做:
SELECT temp.* FROM (SELECT
page_instance.name AS 'page name',
(
SELECT COUNT(*)
FROM visitor_event
WHERE page_instance.id = visitor_event.item_id
) AS 'visit_count'
FROM item_event
LEFT JOIN visitor_event_type ON visitor_event_type.id = visitor_event_type_id
LEFT JOIN page_instance ON page_instance.id = visitor_event.item_id
LEFT JOIN page ON page.id = page_instance.page_id
WHERE visitor_event_type.handle = 'viewed'
AND page_instance.name != 'NULL'
GROUP BY page.id
LIMIT 5 ) as temp ORDER BY temp.visit_count DESC
头脑=崩溃。太快了。谢谢我不能再等9分钟才接受这个答案。