Задать вопрос
@Tyusha

Как задать значение LIMIT через SELECT COUNT ...?

Мне нужно задать числовое значение LIMIT, которое определяется количеством строк в некотором другом подзапросе. Хочу как бы:
LIMIT ( SELECT COUNT(*) FROM ... WHERE ... )
Однако селект возвращает строку с единственным столбцом "COUNT(*)" с числовым значением, а LIMIT хочет просто число. Как правильно составить выражение?

Надо иметь в виду, что это у меня из PHP делается, т.е. надо как-то уместить в один запрос, а не в SQL-программу с переменными.
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
ney
@ney
Go/PHP разработчик
Такую логику лучше через JOIN делать, для LIMIT нельзя указывать запрос, там должно быть число
Ответ написан
Комментировать
@elderl
LIMIT не относится к подзапросу SELECT. Селект выдаёт, что мне надо, и выдаёт правильно. LIMIT — это часть другого запроса (UPDATE), который я не показал, и с которым всё тоже в порядке... но ему нужно задать LIMIT.
Задайте условие, по которому вы считаете количество, в операторе обновления.
Ответ написан
Прямо через limit - только отдельным запросом.

В зависимости от задачи, можно в под запросе считать не количество, а выбирать список уникальных идентификаторов ограниченный необходимым количеством, и уже этот подзапрос использовать в WHERE id IN (....)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы