У меня есть две таблицы, продукты (product_id) и секс (product_id, sex_id). Я пытаюсь УДАЛИТЬ строки из обеих таблиц, у которых есть product_id, так что существует таблица в таблице sex с этим product_id и sex = 1. До сих пор яЗачем этот запрос DELETE терпит неудачу, когда работает эквивалентный SELECT?
CREATE TEMPORARY TABLE tempTable
SELECT p.product_id
FROM products AS p
INNER JOIN sex AS s
ON p.product_id = s.product_id
WHERE s.sex = 1;
DELETE FROM products AS p
NATURAL JOIN tempTable AS t
УДАЛИТЬ запрос выдает эту ошибку:
#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 'NATURAL JOIN tempTable AS t' at line 2
Этот ВЫБРАТЬ запрос работает отлично:
SELECT * FROM products
NATURAL JOIN tempTable
Почему ВЫБЕРИТЕ работу запроса, но запрос на удаление делает не?
Я не эксперт MySQL, но ваш файл 'AS p' и' AS T' псевдонимами, кажется, не имеет смысла в 'delete' запроса. Это работает, если вы удалите их? –
@JoeWhite Почему они не должны иметь смысл? Вы можете использовать их в 'WHERE', если он у вас есть. Или (см. Мой ответ), чтобы указать, в какой из таблиц должно быть выполнено DELETE. – glglgl