Mysql - 子查询有超过1行

时间:2015-06-18 07:47:30

标签: mysql sql

我的查询有问题。 这是我的数据库和我的查询: http://sqlfiddle.com/#!9/a4219/17

如果用户有超过3首歌曲我想选择限制3,3。

如果小于3,则为特定用户选择全部

更新

我不需要总是前3首歌曲,在第二次查询中这个偏移限制对我来说非常重要(在我的实际问题中我使用“order by”所以普通限制与偏移量返回另一行而不是前3)。也许你有另一个想法来解决我的问题:

如果用户有超过3首歌曲,则返回3首歌曲而不是前3首(需要限制3,3)。我必须在一个查询中有这个我不能使用PHP等。

2 个答案:

答案 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。

More information about select limit