2015-06-18 5 views
1

У меня проблема с моим запросом. Вот мой дб и мой запрос: http://sqlfiddle.com/#!9/a4219/17Mysql - подзапрос имеет более 1 строки

Если пользователь имеет более чем 3 песни я хочу, чтобы выбрать с лимитом 3,3.

если менее 3 выбрать все для конкретного пользователя

обновление:

Я не нужно всегда первых 3 песней, это смещение в пределе во втором запросе не очень важен для меня (в моих реальных проблемах я использую «order by», поэтому нормальный предел со смещением возвращает мне еще несколько строк, чем первые 3). Возможно, у вас есть еще одна идея решить мою проблему:

Если у пользователя более трех песен, то 3 песни, но не первые 3 (ограничение потребности 3,3). Я должен иметь это в одном запросе я не могу использовать PHP и т.д.

+0

Если менее 3, выберите все средства выбрать все из таблицы или выбрать все для этого конкретного user_id? – Wanderer

+0

для конкретного пользователя. СРЮ. пример обновляется – mariusz

+0

Тогда нет необходимости в описании случая. просто дайте предел .. Проверьте @Mithun Sasidharan ответ. – Wanderer

ответ

0

Вобще:

SELECT * From SONGS where USER_ID = 1 LIMIT 3;

Если это меньше, она будет давать меньше, если это больше она будет давать 3, и если вы требуется определенный набор из 3, просто закажите набор

0

Внутри ВЫБРАТЬ СЛУЧАЙ, КОГДА вы должны вернуть одно «значение» или строку/запись. В вашем случае THEN и ELSE могут и будут возвращать несколько строк для user_id = 1

Ваш код работает нормально, но только для user_id = 3, поскольку у него есть только одна песня.

Чтобы заставить его работать, просто используйте простой LIMIT 3 оператор, который возвращает все строки в запросе нашли, до максимум 3.

Ваш код должен быть как

select song from songs where user_id = 1 

Очевидно, что вы можете использовать параметр в запросе на какой платформе вы строите на допрос вместо user_id = hardcoded_value.

More information about select limit

+0

Моя проблема больше причислена, мне нужно какое-то «условие» для одной программы, которая использует только xml с циклом sql. Я должен иметь это в одном запросе, мне не нужны всегда первые 3 песни, это смещение в пределе во втором запросе действительно важно для меня – mariusz

+0

В этом случае вы можете отредактировать свой вопрос и добавить полную проблему и сценарий, потому что ответы вам до сих пор решить свой первоначальный вопрос. – LonWolf

+0

возможно уже более понятно – mariusz

Смежные вопросы