2014-05-25 38 views
0

我想計算表中最重複的值,但它是在子查詢中完成的,而我的SQLyog不支持該類型的查詢,下面是我的查詢:如何在不使用限制函數的情況下計算MySQL子查詢中最重複的值

SELECT `band`.`band_id`,`member_id`,`member_name`,`contact_no` 
FROM seasons 
INNER JOIN programs_recorded ON programs_recorded.season_id=seasons.season_id 
INNER JOIN programs ON programs_recorded.program_id=programs.program_id 
INNER JOIN songs_performed ON songs_performed.program_id=programs.program_id 
INNER JOIN songs ON songs.song_id=songs_performed.song_id 
INNER JOIN `band` ON `band`.`song_id`=`songs`.`song_id` 
INNER JOIN `band_member` ON `band_member`.`band_id`=`band`.`band_id` 
WHERE `band`.`song_id` = ANY (SELECT `songs_performed`.`song_id` 
           FROM `songs_performed` 
           GROUP BY `song_id` 
           HAVING COUNT(`s_id`)>3) 
GROUP BY `member_id` ; 

正如你可以在上面看到我寫COUNT(s_id)>3這是不通用的,一個解決方案是,我通過和限制使用GROUP BY函數與順序沿着但SQLyog的給出錯誤說它在這個版本不支持。

+0

LIMIT有什麼問題?我不明白 – Strawberry

+0

它給出了錯誤說所有/任何/某些子查詢不支持限制函數。 etc –

+0

但是查詢中沒有限制!?!?!?! – Strawberry

回答

0

無論如何,有什麼不對這樣的事情...

SELECT DISTINCT b.band_id 
       , member_id 
       , member_name 
       , contact_no 
      FROM seasons ss 
      JOIN programs_recorded pr 
      ON pr.season_id = ss.season_id 
      JOIN programs p 
      ON pr.program_id = p.program_id 
      JOIN songs_performed sp 
      ON sp.program_id = p.program_id 
      JOIN songs s 
      ON s.song_id = sp.song_id 
      JOIN band b 
      ON b.song_id = s.song_id 
      JOIN band_member bm 
      ON bm.band_id = b.band_id 
      JOIN 
       (SELECT sp.song_id 
        FROM songs_performed sp 
       GROUP 
        BY song_id 
       HAVING COUNT(s_id) > 3 
      ) x 
      ON x.song_id = b.song_id; 

+0

那麼。我昨天提交了我的項目..問題是,因爲你也使用count(s_id)> 3。這> 3不是通用的,因爲我知道這是我數據庫中最重複的值。如果不是3,我寫了1,那麼它將打印所有在數據庫中多於一次出現的數據,而不是出現最多的數據。無論如何感謝您的貢獻。 –

相關問題