SQL запрос

программирование php MySQL базы данных sql

SELECT uid, photo, nick_name
FROM jonx__users_profiles
WHERE uid IN (
SELECT uid
FROM jonx__counters_and_ratings
ORDER BY main_rating DESC LIMIT 4
)

ругается на лимит, без лимита выборка на ура(ток великовата), замена LIMIT 4 на LIMIT 0 , 4 непомогла

Примечание:
>>Без имени (Вячеслав Юрьевич)
вот именно та ситуация, «This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'», но LIMIT за скобки выносить совсем не хочется
Ответы:
если вам надо ограничить всю выборку, а не четырьмя пользователями, тогда limit надо перенести за скобку
>>я поднял количество тестовых записей в комментах до 1000 и мой первый запрос перестал работать :)
видимо он там все таки проходится в порядке индекса а не ордера и сооцно @cnt считает не в правильном порядке
Разбейте ваш запрос на два запроса.
Вам ведь написали, что MySQL не поддерживает лимиты в подзапросах. Значит нужно переделать запрос так, чтобы подзапроса не было или они имели несколько иное назначение.
Более того, в вашем случае, подзапрос — зло, т. к. будет выполняться для каждой записи основной таблицы.
Переделать можно, например, так:
SELECT t1.uid, t1.photo, t1.nick_name FROM `jonx__users_profiles` AS `t1` INNER JOIN `jonx__counters_and_ratings` AS `t2` ON t2.uid = t1.uid ORDER BY t2.main_rating DESC LIMIT 4
Если во второй таблице может быть несколько записей, соответствующих первой таблице, то убираем дубли:
SELECT * FROM (SELECT t1.uid, t1.photo, t1.nick_name FROM `jonx__users_profiles` AS `t1` INNER JOIN `jonx__counters_and_ratings` AS `t2` ON t2.uid = t1.uid ORDER BY t2.main_rating DESC) AS `res` GROUP BY `uid` LIMIT 4


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.