我用 PHP 做了類似的事情,它有效。
$table1 = $DB->query('SELECT column1 FROM table1');
$table2 = $DB->query('SELECT column2 FROM table2'); # excludes
$diff = "'" . implode("','", array_diff($table1, $table2)) . "'";
$DB->query("DELETE FROM table1 WHERE column1 IN ({$diff})");
我的問題是如何用一個 sql 陳述句做同樣的array_diff/implode事情,而不是寫 3 個不同的東西然后做這件事。
不幸的是,我的 sql 知識有限,但我很確定這是可能的,我想,JOIN但 2 小時后仍然找不到方法。:/
uj5u.com熱心網友回復:
你可以試試這個:
DELETE t1
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.column1 = t2.column2;
uj5u.com熱心網友回復:
您可以使用子查詢。查詢將如下所示。
Delete from Table1
where column1 in (
SELECT column2 FROM table2
)
uj5u.com熱心網友回復:
這是一個解決方案
DELETE FROM table1 WHERE column1 IN (
SELECT t0.column1 FROM
(SELECT column1 FROM table1) AS t0
JOIN
(SELECT column2 FROM table2) AS t1
ON t0.column1 = t1.column2)
謝謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322108.html
上一篇:將兩個查詢合并為一個查詢
下一篇:登錄頁面,想檢查現有用戶
