SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 29.01.2017 17:47:55

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Два Limit в тексте запроса

Помогите разобраться это баг или делаю, что-то не так.
Наткнулся на него на реальном запросе, но это же проявляеться на искусственном запросе

SELECT 1 FROM dual
WHERE EXISTS(SELECT 1 FROM dual LIMIT 1)
LIMIT 1;

Ошибка:

1 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 'limit 0,1000' at line 5 SQL1.sql 14 1

Изменяю запрос

...
WHERE EXISTS(SELECT 1 FROM dual LIMIT 1)
  AND 1=1
LIMIT 1;
Все отлично!
То есть, между последним и предпоследним LIMIT должен быть любой оператор?
Очень смахивает на баг.

Неактивен

 

#2 29.01.2017 17:54:07

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Два Limit в тексте запроса

Не удалось воспроизвести ошибку (5.6.24-72.2 Percona Server).

CREATE TABLE `a` (
  `b` int(11) DEFAULT NULL,
  KEY `b` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO a VALUES (1);
SELECT 1 FROM a WHERE EXISTS (SELECT 1 FROM a LIMIT 1) LIMIT 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
 


В Вашем запросе ошибка возле limit 0,1000. Это первый или второй лимит?

Неактивен

 

#3 29.01.2017 17:56:29

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Два Limit в тексте запроса

у меня MySql 5.5.54.
На второй.

Неактивен

 

#4 29.01.2017 17:57:52

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Два Limit в тексте запроса

А мой вариант запроса тоже отрабатывает без ошибки?

Неактивен

 

#5 29.01.2017 18:37:43

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Два Limit в тексте запроса

С AND 1=1 тоже без ошибки.

Неактивен

 

#6 29.01.2017 20:44:18

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Два Limit в тексте запроса

в 5.5.34-MariaDB-log ошибки тоже нет

Неактивен

 

#7 29.01.2017 21:27:49

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Два Limit в тексте запроса

Я имел ввиду это

SELECT 1 FROM dual
WHERE EXISTS(SELECT 1 FROM dual LIMIT 1)
LIMIT 1;

Неактивен

 

#8 29.01.2017 21:39:10

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Два Limit в тексте запроса

mysql> CREATE TABLE `dual` (id int);
Query OK, 0 rows affected (0.03 sec)

mysql> SELECT 1 FROM dual
    -> WHERE EXISTS(SELECT 1 FROM dual LIMIT 1)
    -> LIMIT 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)


Какой результат у Вас? В первом посте топика код ошибки не полностью соотвествует запросу.

Неактивен

 

#9 29.01.2017 21:42:16

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Два Limit в тексте запроса

Да, без таблицы `dual` то же самое.

mysql> drop table `dual`;
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT 1 FROM dual WHERE EXISTS(SELECT 1 FROM dual LIMIT 1) LIMIT 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

Неактивен

 

#10 29.01.2017 22:00:21

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Два Limit в тексте запроса

rgbeast написал:

mysql> CREATE TABLE `dual` (id int);

Я даже не знал, что можно создать таблицу с зарезервированным словом dual!

rgbeast написал:

Какой результат у Вас?

Стандартный sad

1 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 'limit 0,1000' at line 3 SQL1.sql 1 1

rgbeast написал:

В первом посте топика код ошибки не полностью соотвествует запросу.

да. Когда писал в форум запрос немного сократил (перевод строки убрал) для компактности. Но сути это не меняет.
Значить баг только в 5.5.54? Кто еще может проверить на 5.5.54 или даже 5.5.*?

Отредактированно klow (29.01.2017 22:07:21)

Неактивен

 

#11 29.01.2017 23:07:21

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Два Limit в тексте запроса

Проверил на 5.1.67 и на 5.5.47 - ошибки нет.

Неактивен

 

#12 30.01.2017 23:18:55

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Два Limit в тексте запроса

У меня уже закралось сомнение, что может дело в OS? Кто проверял под windows?

Неактивен

 

#13 31.01.2017 00:20:03

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Два Limit в тексте запроса

Всем спасибо! Разобрался это не баг MySql, а баг dbForge for MySQL.
sad

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson