2012-03-20 84 views
1

我有一個表有以下欄目:Mysql的多個子查詢限制

playlistid 
trackname 
playstatus 
likes 
dislikes 
created 

playstatus可以有以下值:0, 1, 2 and 4

,即時通訊現在使用SQL查詢:

SELECT * from playlist 
WHERE playlistid=$myplaylistid && playstatus=0 
ORDER BY (likes-dislikes) DESC, created ASC 

其值得一提的是始終有隻將一排與playstatus = 1,一排用playlistid = 3,但會有playstatus = 0和2的多行。

我想要改變上面的查詢,以便從playstatus = 3的位置獲得1行,從playstatus = 1的位置獲得1行,以及從playstatus = 0的位置獲得3行單個查詢。所有這些都必須根據您在上述查詢中看到的相同順序進行選擇。

所有幫助表示讚賞!感謝您的時間!

回答

1

嘗試此查詢

SELECT * from playlist WHERE playlistid=$myplaylistid && playstatus=1 
ORDER BY (likes-dislikes) DESC, created ASC limit 1 
union 
SELECT * from playlist WHERE playlistid=$myplaylistid && playstatus=3 
ORDER BY (likes-dislikes) DESC, created ASC limit 1 
union 
SELECT * from playlist WHERE playlistid=$myplaylistid && playstatus=0 
ORDER BY (likes-dislikes) DESC, created ASC limit 3 
+0

你忘了一些括號,但除此之外,它的工作就像一個魅力。由於其他用戶沒有像你那樣正確地讀取問題,你會得到V.(我需要限制每個playstatus,以及每個playstatus的使用orderby)。 – 2012-03-20 13:44:39

1

試試這個

SELECT * from playlist WHERE playlistid=$myplaylistid && playstatus=3 
union 
SELECT * from playlist WHERE playlistid=$myplaylistid && playstatus=1 
union 
SELECT * from playlist WHERE playlistid=$myplaylistid && playstatus=0 
ORDER BY (likes-dislikes) DESC, created ASC