[英]One Query to delete table row based from other table value
我正在使用php我的管理員,我非常感謝任何建議或幫助,我試圖根據另一個表中的列刪除未使用的地址,如果在其他列值中找不到,也可以刪除
我有2張桌子,像這樣:
tbladdress
id Address
1222 add1
1332 add2
1555 add3
1776 add4
tblcx
name location Status
ana 1222 completed
ema 1332 used
ada 1332 completed
我想從id等於tblcx位置的tblcx位置的tbladdress刪除行,而如果使用tblcx Status則不能執行任何刪除操作
期望的輸出
tbladdress
id Address
1332 add2
未刪除id 1332,因為另一個客戶仍在使用它1555和1776因為未完成而被刪除,因為其他表1222中不存在,因為狀態已完成
我正在使用此查詢
DELETE t1
FROM tbladdress t1
INNER JOIN tblcx t2
ON t1.ID = t2.location and t2.Status = 'Completed';
它工作正常,但我也想刪除在tblcxlocation中找不到的ID
我希望能在一個查詢中得到任何建議或幫助,
DELETE FROM tbladdress
WHERE NOT EXISTS (
SELECT *
FROM tblcx
WHERE (tbladdress.id != tblcx.location)
);
您可以使用EXISTS
檢查地址是否在tblscx
存在狀態為'used'
的記錄。 我想所有不存在此類記錄的地址都是您要刪除的地址。 因此,用NOT
否定表達式。
DELETE FROM tbladdress
WHERE NOT EXISTS (SELECT *
FROM tblscx
WHERE tblscx.location = tbladdress.id
AND tblscx.status = 'used');
您可以改用LEFT JOIN
,並檢查t2.location
是否為NULL
(即t1.ID
沒有匹配記錄):
DELETE t1
FROM tbladdress t1
LEFT JOIN tblcx t2 ON t1.ID = t2.location
WHERE t2.Status = 'Completed' OR t2.location IS NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.