Ошибка при использовании псевдонима таблицы - PullRequest
1 голос
/ 29 июня 2011

Почему я получаю сообщение об ошибке, используя псевдоним таблицы в DELETE QUERY, но НЕ в SELECT QUERY

Этот работает нормально

SELECT * FROM tablename a WHERE a.fieldname > 10

Этот выводит сообщение об ошибке

DELETE FROM tablename a WHERE a.fieldname > 10

Сообщение об ошибке:

# 1064 - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с полем WHERE a. .....

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Попробуйте:

DELETE a FROM tablename a WHERE a.fieldname > 10

(Конечно, псевдонимы вряд ли полезны в операторах одной таблицы.)


Ответ на второй вопрос

Синтаксис для нескольких таблиц DELETE следующий:

DELETE t1
FROM table1 AS t1
LEFT JOIN table2 t2 ON t1.foo_id=t2.foo_id
WHERE t1.foo1 > 0

т. Е. Вы должны указать, из какой таблицы вы хотите удалить строки (в одиночных операторах таблицы это не требуется, поскольку задействована только одна таблица).

Синтаксис задокументирован в http://dev.mysql.com/doc/refman/5.5/en/delete.html

0 голосов
/ 22 января 2014

Привет, я получаю ту же ошибку, исправленную небольшим изменением в запросе.ТАК ваш запрос должен быть:

DELETE a FROM tablename a WHERE a.fieldname > 10;
0 голосов
/ 29 июня 2011

Угадайте, что ... вы не можете использовать псевдонимы с DELETE. Полная остановка. Конец истории.

Это будет работать:

DELETE FROM tablename WHERE fieldname > 10;
...