-1
DELETE FROM `tblinvoices` WHERE userid NOT IN (SELECT f.id FROM `tblclients` f);

我正在运行上述查询以删除客户端池中不存在用户 ID 的发票。

理论上,这个查询的每个部分都是单独工作的,但是当组合“NOT IN”时 - 不起作用。

我不知道为什么会这样,我已经对其进行了很多测试,但根本无法使其正常工作。

从 tblinvoices 运行以下查询时:

SELECT * FROM `tblinvoices` WHERE userid = 73;

查询正确返回,并返回该用户的发票:

SELECT f.id FROM `tblclients` f;

它自己也运行得很好,从 tblclients 返回所有用户标识。

我正在使用 SELECT 来预览更改

模拟查询我可以看到这个返回:

SQL query:

DELETE FROM `tblinvoices` WHERE userid NOT IN (SELECT f.id FROM `tblclients` f)

Matched rows: 0
4

2 回答 2

0

您的查询是正确的。请检查表 tblinvoices 和 tblclients 中用户 ID 的数据类型,两者都应该是相同的数据类型并检查可用或不可用的 tblinvoices id

于 2021-05-30T13:45:42.943 回答
0

好的 - 我发现了导致此问题的问题,Maria 有一个不允许 NOT IN 的数据库设置。

这通常是一些共享主机的情况。

于 2021-05-31T22:09:51.443 回答