我有以下表格:
T1
V | H
--+--
a q
s w
d e
f r
T2
VH
--
a
w
d
e
我需要以下结果:
V | H | RES
--+---+----
a q V
s w H
d e B
也就是说,我需要从T1中选择V
或H
(或两者都存在)值在T2中的行,如果在T2中找到T1.V
值,则需要选择附加列RES
中的值“V”;如果T1.H
值在T2中,则选择'H‘;如果T2表中同时存在T1.V
和T1.H
值,则选择'B’。
我需要ANSI SQL查询,没有任何特定的DB引擎语法。
发布于 2022-09-15 15:55:08
您可以使用CASE WHEN
来实现这一点。
SELECT T1.*,
CASE WHEN T1.V IN (SELECT VH FROM T2) AND T1.H IN (SELECT VH FROM T2) THEN 'B'
WHEN T1.V IN (SELECT VH FROM T2) THEN 'V'
WHEN T1.H IN (SELECT VH FROM T2) THEN 'H' ELSE 'N' END AS RES
FROM T1
WHERE RES <> 'N'
发布于 2022-09-16 06:58:38
我又找到了一种方法:
SELECT 'V' AS RES, T1.* FROM T1
WHERE T1.V IN (SELECT VH FROM T2) AND T1.H NOT IN (SELECT VH FROM T2)
UNION SELECT 'H', T1.* FROM T1
WHERE T1.V NOT IN (SELECT VH FROM T2) AND T1.H IN (SELECT VH FROM T2)
UNION SELECT 'B', T1.* FROM T1
WHERE T1.V IN (SELECT VH FROM T2) AND T1.H IN (SELECT VH FROM T2)
https://stackoverflow.com/questions/73733598
复制相似问题