我必须检查两个查询(例如更新和删除语句)是否影响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