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分钟才接受这个答案。