我的查询有问题。 这是我的数据库和我的查询: http://sqlfiddle.com/#!9/a4219/17
如果用户有超过3首歌曲我想选择限制3,3。
如果小于3,则为特定用户选择全部
更新
我不需要总是前3首歌曲,在第二次查询中这个偏移限制对我来说非常重要(在我的实际问题中我使用“order by”所以普通限制与偏移量返回另一行而不是前3)。也许你有另一个想法来解决我的问题:
如果用户有超过3首歌曲,则返回3首歌曲而不是前3首(需要限制3,3)。我必须在一个查询中有这个我不能使用PHP等。
答案 0 :(得分:0)
只是做:
SELECT * From SONGS where USER_ID = 1 LIMIT 3;
如果它更少,它会给予更少,如果它更多它将给3并且如果你想要一个特定的3组,只需订购
答案 1 :(得分:0)
在SELECT CASE中,你必须返回一个"值"或行/记录。 在您的情况下,THEN和ELSE可以并将返回user_id = 1
的多行您的代码工作正常但仅适用于user_id = 3,因为他只有一首歌。
要使其正常工作,只需使用简单的LIMIT 3运算符,该运算符将全部返回查询找到的行,最多返回3 。
您的代码应该像
select song from songs where user_id = 1
显然,您可能希望在构建interogation的任何平台上使用参数来代替user_id = hardcoded_value。