Что не так с моим запросом DELETE

У меня есть две таблицы с одинаковыми столбцами. Я пытаюсь удалить строки из таблицы 1 «600_LONDON_NUMBER», которые находятся в таблице 2 «600_LONDON_NUMBER1». Ниже приведен мой запрос, но когда я его запускаю, MS Access говорит: «Не удалось удалить из указанных таблиц». Пожалуйста помоги

DELETE [600_LONDON_NUMBER].*
FROM 600_LONDON_NUMBER INNER JOIN 600_LONDON_NUMBER1 
ON ([600_LONDON_NUMBER].GFCID = [600_LONDON_NUMBER1].GFCID) AND ([600_LONDON_NUMBER].CUSTBaseNO = [600_LONDON_NUMBER1].[CUST Base NO]);

P.S. Когда я запускаю оператор SELECT для того же запроса, он извлекает данные без каких-либо проблем. Я также проверил, что данные не readonly можно удалить с помощью простого DELETEзапроса.


person Mohd akhtar    schedule 27.09.2017    source источник
comment
И это база данных MySQL?   -  person GolezTrol    schedule 27.09.2017
comment
часть между DELETE и FROM не нужна   -  person Florian Koch    schedule 27.09.2017
comment
добавить подзапрос в предложение where для удаления данных   -  person rahul    schedule 27.09.2017
comment
@FlorianKoch MsAccess может получить эту часть. см. этот msdn.microsoft.com/en-us /библиотека/bb177896(v=office.12).aspx   -  person Sankar    schedule 27.09.2017
comment
@FlorianKoch Пытался удалить его, теперь он говорит Укажите таблицу, содержащую записи, которые вы хотите удалить   -  person Mohd akhtar    schedule 27.09.2017
comment
извините, я что-то пропустил, я изменил ответ   -  person Florian Koch    schedule 27.09.2017
comment
@SankarRaj Хорошо, приятно знать   -  person Florian Koch    schedule 27.09.2017
comment
Возможный дубликат Удалить с присоединением в MySQL   -  person GolezTrol    schedule 27.09.2017
comment
Хорошо, это то, что вы получаете, когда вы идете на мошенников на тегах. Теперь у вас есть куча бесполезных для вас ответов и комментариев MySQL.   -  person GolezTrol    schedule 27.09.2017


Ответы (1)


вы можете использовать EXISTS для решения

DELETE 600_LONDON_NUMBER.* FROM 600_LONDON_NUMBER 
WHERE EXISTS (
     SELECT 1 FROM 600_LONDON_NUMBER1 
     WHERE [600_LONDON_NUMBER].GFCID = [600_LONDON_NUMBER1].GFCID) AND 
           [600_LONDON_NUMBER].CUSTBaseNO = [600_LONDON_NUMBER1].[CUSTBaseNO]
)
person Radim Bača    schedule 27.09.2017
comment
Что представляет собой 1 в SELECT 1? - person Mohd akhtar; 27.09.2017
comment
Оператор EXISTS возвращает true, если SELECT возвращает хоть что-то, следовательно, скалярное значение 1 и есть это что-то. - person Radim Bača; 27.09.2017
comment
Спасибо, мне просто нужно было добавить правильное имя столбца... ниже работает.. DELETE 600_LONDON_NUMBER.* FROM 600_LONDON_NUMBER WHERE EXISTS (SELECT 1 FROM 600_LONDON_NUMBER1 WHERE [600_LONDON_NUMBER].GFCID = [600_LONDON_NUMBER1].GFCID AND [600_LONDON_NUMBER].CUSTBaseNO = [600_LONDON_NUMBER1].[CUST Base NO]); - person Mohd akhtar; 27.09.2017