我有一个表,下面的列
TableX
TB1_ID
TB_GO_ID
TB_RET_ID
TB1_ID TB_GO_ID TB_RET_ID
1 22 NULL
2 23 24
3 25 null
另一张tableTABLEY
TB2
TB_ID
TB2_ID TB_ID
1 22
2 22
3 23
4 24
我的尝试
SELECT
TB1_ID,
isexist
FROM TABLEX r,TABLEY Y where Y.TB_ID in (R.TB_GO_ID, R.TB_RET_ID)
预期产量
TB1_ID Isexist
1 yes
2 yes
3 FALSE
此处isexist取决于此ID TB_GO_ID/TB_RET_ID是否存在于TABLEX中,将此值设置为1,否则将其设置为0。
我写了如下的查询,从tablex和一个变量字段中获取id,该变量字段确定第二个表中是否存在TB_GO_ID、TB_ret_ID。我期待着一个单一的行与表x的细节和一个新的领域,说如果身份证存在于第二个表。
3条答案
按热度按时间drkbr07n1#
您可以使用
EXISTS
与CASE
表达式中的相关子查询:其中,对于样本数据:
输出:
| TB1_ID|存在|
| --------------|--------------|
| 1|是的|
| 二|是的|
| 三|假的|
fiddle
57hvy0tb2#
我不知道1、2、3在期望输出中代表什么;我认为这些应该是TB_GO_ID和TB_RET_ID中的值。
假设我是对的,那么:
样本数据:
查询从这里开始:
temp
CTE创建存储在TB_GO_ID
和TB_RET_ID
中的唯一非空ID值列表:最后,检查
tabley
中是否存在temp
ID
s:apeeds0o3#
样本数据:
输出如下: