有了下面的查詢我能找到的數據我想刪除:由左發現如何刪除記錄加入
SELECT ab.id, ab.anlage_id, a.id
FROM `anlagetobedienung` AS ab
LEFT JOIN anlage_new AS a ON ab.`anlage_id` = a.id
WHERE a.id IS NULL
如何做我必須寫一個刪除在anlagetobedienung表中找到的記錄DELETE語句?
有了下面的查詢我能找到的數據我想刪除:由左發現如何刪除記錄加入
SELECT ab.id, ab.anlage_id, a.id
FROM `anlagetobedienung` AS ab
LEFT JOIN anlage_new AS a ON ab.`anlage_id` = a.id
WHERE a.id IS NULL
如何做我必須寫一個刪除在anlagetobedienung表中找到的記錄DELETE語句?
通常我會說:
delete anlage_new
where id in (
SELECT a.id
FROM `anlagetobedienung` AS ab
LEFT JOIN anlage_new AS a ON ab.`anlage_id` = a.id
WHERE a.id IS NULL
)
即刪除該行,其中主鍵是在選擇的識別記錄刪除的結果。
但根據你的查詢,那些有id = NULL
這似乎沒有任何意義。
您能否提供一些示例數據?
你的編輯後,我想說這應該工作:
delete `anlagetobedienung`
where id in (
SELECT ab.id
FROM `anlagetobedienung` AS ab
LEFT JOIN anlage_new AS a ON ab.`anlage_id` = a.id
WHERE a.id IS NULL
)
注:內選擇了「ab.id」,而不是「a.id」這似乎是在原來僅有的一列選擇有可能包含有用的東西。
所以:'刪除anlage_new其中ID爲空'? – Benoit
DELETE FROM anlagebedienung aDEL WHERE aDEL.id IN
(SELECT ab.id
FROM `anlagetobedienung` AS ab
LEFT JOIN anlage_new AS a ON ab.`anlage_id` = a.id
WHERE a.id IS NULL)
感謝您的回答。這就是我之前已經嘗試過的。結果是:#1064 - 你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'aDEL WHERE aDEL.id IN(在第1行選擇ab.id FROM'anlagetobedienung' AS ab L LEF J' – BetaRide
另一種可能的解決方案:
DELETE FROM anlagetobedienung A
WHERE
NOT EXISTS (SELECT * FROM anlage_new AN WHERE AN.id = A.anlage_id)
如果MySQL支持別名,在DELETE FROM
(在MS SQL的支持,但我知道,一些主要的RDBMS不支持這一點),那麼你可以做:
DELETE ab
FROM
anlagetobedienung AS ab
LEFT JOIN anlage_new AS a ON
ab.anlage_id = a.id
WHERE
a.id IS NULL
你可以簡單地做:
DELETE FROM anlagetobedienung ab
WHERE NOT EXISTS (SELECT NULL
FROM anlage_new a
WHERE a.id = ab.anlage_id
)
在'anlage_new'中找到記錄?您的查詢特別要求'anlagetobedienung'中的行,其中'anlage_new'中沒有**行。你是否想從'anlagetobedienung'刪除? – Benoit
你是對的它應該是anlagetobedienung。更正了這個問題。 – BetaRide