我有兩個表。 歌曲表包含我可以聽的所有歌曲。 存檔表我把播放的歌曲與日期和時間。MySql如果前面的選擇是空的選擇
我會做什麼是查詢數據庫給我一首歌:
1)不要玩過(沒有出現在表歸檔)
....如果無法
2)存在於檔案但
之前已被播放至少24小時....如果不可能
3)是否在此存檔但阿爾季這首歌的ST
4)最後,之前已經玩過至少3個小時,如果沒有結果,我想從數據庫中的宋表
(
SELECT song.*
FROM
song AS song
LEFT JOIN
(SELECT song_artist
FROM archive
WHERE customer_id=50
AND genre=32
AND channel=44
AND archive_date < DATE_SUB(NOW(), INTERVAL 3 HOUR)
)
AS archive_a
ON song.song_artist = archive_a.song_artist
LEFT JOIN
(SELECT song_id
FROM archive
WHERE customer_id=50
AND genre=32
AND channel=44
AND archive_date < DATE_SUB(NOW(), INTERVAL 24 HOUR)
)
AS archive_b
ON song.song_id = archive_b.song_id
LEFT JOIN
(SELECT a.song_id FROM song a
LEFT JOIN archive b
ON a.song_id = b.song_id
WHERE NOT EXISTS (
SELECT null
FROM archive c
WHERE customer_id=50
AND genre=32
AND channel=44
AND c.song_id = a.song_id
)
)
AS song_c
ON song.song_id = song_c.song_id
WHERE FIND_IN_SET('32', genre) <> 0
AND archive_a.song_artist Is Null
AND archive_b.song_id Is Null
AND song_c.song_id Is Null
GROUP BY song_artist ORDER BY RAND() LIMIT 1
)
UNION
(
SELECT song.*
FROM
song AS song
WHERE FIND_IN_SET('32', genre) <> 0
GROUP BY song_artist ORDER BY RAND() LIMIT 1
)
我試圖返回一個隨機歌曲在這個世界但不工作
這不會提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 –
謝謝Logan的建議,併爲此感到抱歉。 –