【发布时间】:2018-08-10 05:30:14
【问题描述】:
所以,我一直在尝试用 SQL 编写查询,但遇到了一个问题。我正在尝试写一种“属于”的条件。我想要做的是,如果要获取的值属于另一个表中的列,则填充一件事,否则填充 null。
例如。
NAME table
ID NAMES
1 A
2 B
3 C
4 D
5 E
XYZ table
ID
2
4
5
我写了这样的查询
(CASE WHEN NAME.ID IN (SELECT ID FROM XYZ) THEN NAME.NAMES ELSE NULL END ) AS 'ABC'
这个查询确实运行了,但它已经运行了 14 个小时(显然是为了大量的数据),但仍然没有结果。这个逻辑有什么缺陷还是有更好的方法可以做到?
我希望得到这样的结果:
ABC
NULL
B
NULL
D
E
【问题讨论】:
-
您使用的是哪个 RDBMS?
-
我总是尽量避免选择列表中的子查询。我会在 Name.ID 上离开 join 到 XYZ,然后在你的 case 语句中的关键字段上检查是否为空。至少我是这么认为的,你的问题并不太清楚。
标签: sql logic belongs-to