我有两个表。 歌曲表包含我可以听的所有歌曲。 存档表我把播放的歌曲与日期和时间。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的建议,并为此感到抱歉。 –