【问题标题】:how to group by with order by on somewhat complex mysql query如何在有些复杂的mysql查询中按顺序分组
【发布时间】:2014-03-02 17:38:19
【问题描述】:
(SELECT dtable.*, new_apps.top as t1 FROM app_detailsvvv as dtable INNER JOIN new_apps ON
new_apps.trackId=dtable.trackId WHERE (SELECT COUNT(*) AS c FROM compositions as dtablev
WHERE parent='169469' AND trackId=dtable.trackId AND new_apps.top > 0)>0) UNION
(SELECT *, 301 FROM app_detailsvvv as dtable WHERE (SELECT COUNT(*) AS c FROM compositions   
as dtablev WHERE parent='169469' AND trackId=dtable.trackId)>0) ORDER BY t1 ASC, trackName 
ASC LIMIT 0,12

这个查询给我带来了重复,我如何按 trackId 分组?

【问题讨论】:

    标签: mysql join mysqli union


    【解决方案1】:

    将 trackid 作为 SELECT 语句的一部分 ...

    SELECT new_apps.trackId,
           ..etc...
    ..
    ..
    
    GROUP BY 1
    

    确保您的其余 SELECT 项(包括子 SQL 查询)已聚合 - 例如 MAX、FIRST、SUM 或将它们分组为单个结果的内容。

    【讨论】:

    • 联合中的两个查询都选择了 trackId 字段,但我无法使用 order by 进行分组
    • 您不能同时 group by 和 order by,因为 group by 根据您从左到右选择的顺序进行排序。只需使用分组方式
    猜你喜欢
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2017-03-29
    • 2018-08-12
    • 2021-09-10
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多