我有以下语句来查找包含某些值但排除其他值的行:
SELECT *
FROM tests
WHERE author = 4
OR id = -999
OR id = 276
OR id = 343
OR id = 197
OR id = 170
OR id = 1058
OR id = 1328
OR id = 1417
AND is_deleted = 0
AND id NOT IN (457, 2409, 173, 400, 167, 277, 163, 404, 2222, 24, 26,
2457, 16, 25, 1639, 2224, 1804, 2308, 197, 461, 1442,
1594, 460, 1235, 1814, 2467, 168, 172, 170, 171, 2223, 2535, 2754)
但是,根据 NOT IN 列表,我仍然得到应该排除的行。例如,即使 tests.author = 4,也应排除 id 为 16 的测试。但它正在查询中返回,这是我不想要的。
该语句是根据情况以编程方式创建的。
我犯了语法错误吗?