2014-02-06 33 views
0
(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查詢

回答

0

廣場的TrackID爲你的SELECT語句的一部分......

SELECT new_apps.trackId, 
     ..etc... 
.. 
.. 

GROUP BY 1 

確保您選擇項目的其餘部分(包括子SQL查詢)已經彙總 - 如MAX,FIRST,SUM或將它們分組爲一個結果的東西。

+0

在工會中的兩個查詢都有字段trackId選擇,但我不能按照訂單進行分組 – lbennet

+0

您不能同時進行分組和排序,因爲group by會根據訂單的順序進行排序您從左至右選擇。只需使用group – Fandango68