MySQL Возможно ли выполнение подзапроса после синтаксиса LIMIT?Если нет, то почему? - PullRequest
1 голос
/ 11 июня 2011

У меня MySQL Server версии 5.1.53.Я искал час, чтобы ответить на этот вопрос сам.В том числе прочитайте саму документацию на http://dev.mysql.com/doc/refman/5.1/en/select.html

В настоящее время я выполняю этот запрос.

SELECT dv2.timestamp 
FROM data_val AS dv2
WHERE dv2.timestamp > '2011-06-10 22:26:25' ORDER BY dv3.timestamp DESC 
LIMIT 1

Затем я пытался устранить синтаксис ORDER BY, определив вычислениеMAX_QUERIES минус 1. Делая это, я мог написать,

SELECT  (COUNT(*)-1) total 
FROM data_val AS dv2a
WHERE dv2a.timestamp > '2011-06-10 22:26:13'

Наконец, запрос становится,

SELECT dv2.timestamp 
FROM data_val AS dv2
WHERE dv2.timestamp > '2011-06-10 22:26:13' 
LIMIT (
     SELECT  (COUNT(*)-1) total 
     FROM data_val AS dv2a
     WHERE dv2a.timestamp > '2011-06-10 22:26:13'
     ), 1

И ошибка:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( SELECT (COUNT(*)-1) total FROM data_val AS dv2a ' at line 4

Я также пытался поставить подзапрос после синтаксиса OFFSET.но все равно ошибка.

У вас есть идеи, почему мой подзапрос не работает?

Мне нужны технические данные с short , простое и объяснение объяснение.

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

Из руководства MySQL: http://dev.mysql.com/doc/refman/5.5/en/select.html

Предложение LIMIT может использоваться для ограничения количества строк, возвращаемых оператором SELECT. LIMIT принимает один или два числовых аргумента, которые оба должны быть неотрицательными целочисленными константами , за исключением:

Внутри подготовленных операторов параметры LIMIT могут быть указаны с помощью? метки-заполнители.

В хранимых программах параметры LIMIT могут указываться с использованием целочисленных стандартных параметров или локальных переменных, начиная с MySQL 5.5.6.

Оптимизатору запросов MySQL необходимо преобразовать параметры ограничения в константу до выполнения запроса, иначе он не будет знать, сколько строк нужно вернуть.

0 голосов
/ 11 июня 2011

Невозможно вставить результат запроса для параметра ограничения

...