我必須檢查兩個查詢(例如更新和刪除語句)是否影響MySQL數據庫中的同一行。如何比較兩個查詢是否影響同一行?
我想到了一個選擇選擇查詢受影響的條目,並檢查是否在同一行出現在兩個查詢:
UPDATE Foo SET col = 'a' WHERE id > 5;
DELETE FROM Foo WHERE col = 'b';
SELECT (SELECT * FROM Foo WHERE col = 'b') IN (SELECT * FROM Foo WHERE id > 5);
在實踐中它的工作對我的簡單Foo
表,但在另一個表故障與幾列 - 即使當兩個子選擇完全相同。同樣對於這個解決方案,第一個子選擇只能包含一個結果。
有誰知道另一個解決方案或上述選擇可能會失敗與另一個表的原因?
對子句IN'(...)'子句的使用要求子查詢只返回一列值。當多個列被返回時,SQL不會知道你想要比較的WHI字段。 – 2012-03-09 15:23:54