我至少有 30 個包含完整資料的 MySQL 表。*.uid = (SELECT uid FROM 'cdelete' WHERE DATEDIFF( NOW( ) , date ) >=1)我有一個 MySQL 事件,它應該從-> 結果應該是的所有表中洗掉所有行1,因為只有具有 id 的客戶1在delete表中。所以我想洗掉每一行uid = 1
到目前為止我已經嘗試過:
DELETE cdelete, customers, orders
FROM cdelete
INNER JOIN customers ON customers.id = cdelete.uid
INNER JOIN orders ON orders.uid = cdelete.uid
WHERE cdelete.uid = (SELECT uid FROM 'cdelete' WHERE DATEDIFF( NOW( ) , date ) >=1)
似乎這種洗掉是不可能的,或者我犯了一些錯誤。知道如何從所有從SELECT uid FROM 'cdelete' WHERE DATEDIFF( NOW( ) , date ) >=1)陳述句中檢索 uid 的表中洗掉嗎?

uj5u.com熱心網友回復:
不需要子查詢,直接在WHERE條件中測驗日期即可。
DELETE cdelete, customers, orders
FROM cdelete
LEFT JOIN customers ON customers.id = cdelete.uid
LEFT JOIN orders ON orders.uid = cdelete.uid
WHERE DATEDIFF( NOW( ) , cdelete.date ) >=1
您需要使用LEFT JOIN而不是INNER JOIN在其他表中沒有相關行的情況下使用。
此外,如果您配置customers和orders使用外鍵,ON DELETE CASCADE那么您只需要從中洗掉cdelete——其他表中的相關行將被自動洗掉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/493844.html
