SQL 'WHERE NOT some condition' 不排除条件

标签 sql sqlite

WHERE NOT some condition不从我的查询中排除该条件。

代码:

SELECT 
    n.timestamp AS tm
FROM 
    (SELECT timestamp, uid 
     FROM nodes 
     UNION ALL 
     SELECT timestamp, uid FROM ways) n
WHERE 
    NOT n.uid = '12055' OR NOT n.uid = '2132512';

目前,此查询返回 3579897 行。

引用:

数据集中的所有时间戳:
SELECT n.timestamp as tm
FROM (SELECT timestamp FROM nodes UNION ALL SELECT timestamp FROM ways) n;

返回 3579897 行。

条件的时间戳:
SELECT n.timestamp as tm
FROM (SELECT timestamp, uid FROM nodes UNION ALL SELECT timestamp, uid FROM ways) n
WHERE n.uid='12055' OR n.uid='2132512'

返回 2254097 行。

最佳答案

我想你想要:

WHERE NOT n.uid = '12055' AND NOT n.uid = '2132512';

您的版本将返回所有行 - 一个或其他条件将(几乎)始终为真。好的,它会过滤掉NULL n.uid 的值.

或者更 Eloquent 地说:
WHERE n.uid NOT IN ('12055', '2132512');

如果 uid是一个数字(我期望),那么你应该去掉单引号:
WHERE n.uid NOT IN (12055, 2132512);

关于SQL 'WHERE NOT some condition' 不排除条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51118311/

相关文章:

sqlite - SQlite删除内部联接

sql - 如何乘以列并添加结果?

iphone - SQLite Select 语句的更好性能

java - 将 XML 响应拆分为页面

sql - 如何根据前一行创建列?

php - 如何防止 PHP 中的 SQL 注入(inject)?

java.lang.IllegalArgumentException : Empty values

mysql - 当另一个对应列为空时过滤掉某些列

sql - PostgreSQL - 数字文字的类型,如 1.0 或 100.0?

php - 错误 : file is encrypted or is not a database