首页 > 解决方案 > MySQL DELETE 查询影响比 SELECT 查询更多的行

问题描述

我有这个返回45 行的 SELECT 查询:

SELECT *
FROM pages as p
INNER JOIN mdata as m
WHERE m.pid = p.id AND
      (m.key LIKE "%RMY%" OR p.type = "page" OR
                  p.type = "parent" OR p.type = "sub")

然后当我使用这个 DELETE 查询时,它说64 行受到影响:

DELETE m,p
FROM pages as p
INNER JOIN mdata as m
WHERE m.pid = p.id AND
     (m.key LIKE "%RMY%" OR p.type = "page" OR
                 p.type = "parent" OR p.type = "sub")

不确定我的 DELETE 查询是否有问题。

有没有办法返回已删除的行,以便我可以检查哪些行正在被删除?

标签: mysql

解决方案


我认为这是正确的查询:

DELETE m,p
FROM pages as p
INNER JOIN mdata as m
ON m.pid = p.id WHERE
     (m.key LIKE "%RMY%" OR p.type  IN("page", "parent","sub"))

推荐阅读