sql - SQL - where 子句中的连接字符串未按预期工作 - Redshift
问题描述
这是我指的 SQL (Redshift):
SELECT *
FROM table_a
WHERE col_a||col_b NOT IN
(
SELECT col_a||col_b
from table_b
);
table_a 中有一些值在 table_b 中不存在,但这总是评估为无行。
有什么见解吗?
解决方案
使用NOT EXISTS
,不NOT IN
! NOT IN
如果子查询中的任何值为NULL
. 另外,您通过连接它们来比较多个列。由于冲突,这可能是一个不好的方法:ab/c 匹配 a/bc。
所以使用这个:
SELECT a.*
FROM table_a a
WHERE NOT EXISTS (SELECT 1
FROM table_b b
WHERE b.col_a = a.col_a AND b.col_b = a.col_b
);
推荐阅读
- angular - 如何使用反应形式创建动态角度形式?
- css - :class 绑定在 IE 或 Iphone 8 中不起作用 - VUE JS
- c++ - 在任务栏可见之前加载时,Windows 任务栏图标对于隐藏窗口可见
- python - django-enumeields 删除默认字段会使迁移失败并出现 ValueError: '' is not a valid Regions
- javascript - 块内容和导航栏后面的预加载器加载
- objective-c - 使用 Objective-C 获取 Mac 的所有 IP 地址
- node.js - 使用 `@zeit/ncc` 将 Node.js(github 操作)编译成单个文件
- java - 我的项目是基于 Maven 的,如何使用 spring boot 将 src\main\resources 目录中的 .xml 文件包含到最终的 jar 包中
- amazon-web-services - 将许多 cloudwatch 日志触发器添加到 lambda 函数
- angular - 在 IIS 上部署后,asp.net core web api 上的 CORS 不起作用