Как использовать MYSQL LIMIT на человека - PullRequest
1 голос
/ 09 сентября 2011

Итак, у меня есть сценарий, в котором мне нужно от 1 до 8 человек, которым нужно запросить до 3 вещей, которые им «понравились» на человека.У меня есть запрос, настроенный как

SELECT liked FROM likeTable WHERE uid IN (uid1,uid2,uid3,uid4) LIMIT 12

, но очевидно, что он потенциально может остановиться, когда у меня есть 12 «лайков» для uid1, а остальное равно 0. Я прочитал возможное решение, например, с использованием UNION ALL...

(SELECT liked FROM likeTable WHERE uid = uid1 LIMIT 3)
UNION ALL
(SELECT liked FROM likeTable WHERE uid = uid2 LIMIT 3)
UNION ALL
(SELECT liked FROM likeTable WHERE uid = uid3 LIMIT 3)
UNION ALL
(SELECT liked FROM likeTable WHERE uid = uid4 LIMIT 3)

И я смог бы добиться этого, сделав строку запроса sql в php с помощью forloop, но является ли это эффективным способом запроса моих данных?

note:Меня не особо волнует порядок, в котором извлекается «понравившийся», хотя было бы неплохо, если бы я мог добавить ORDER BY likeID DESC, который является моей автоинкрементной колонкой

Спасибо!

1 Ответ

0 голосов
/ 09 сентября 2011

Для небольшого числа (я бы сказал, не сотен) категорий (пользователей) просто используйте решение объединения.

И смогу ли я добиться этого, сделав строку запроса sql вPHP с forloop, но это эффективный способ запроса моих данных?

Определенно да!Если вы не запросите сотни пользователей за один раз.Для 1-8 человек это просто идеальное решение!

...