首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何选择数据并在一个查询中有条件地组合数据

如何选择数据并在一个查询中有条件地组合数据
EN

Stack Overflow用户
提问于 2022-09-15 15:13:36
回答 2查看 34关注 0票数 -1

我有以下表格:

T1

代码语言:javascript
运行
复制
V | H
--+--
a   q
s   w
d   e
f   r

T2

代码语言:javascript
运行
复制
VH
--
 a
 w
 d
 e

我需要以下结果:

代码语言:javascript
运行
复制
V | H | RES
--+---+----
a   q    V
s   w    H
d   e    B

也就是说,我需要从T1中选择VH (或两者都存在)值在T2中的行,如果在T2中找到T1.V值,则需要选择附加列RES中的值“V”;如果T1.H值在T2中,则选择'H‘;如果T2表中同时存在T1.VT1.H值,则选择'B’。

我需要ANSI SQL查询,没有任何特定的DB引擎语法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-15 15:55:08

您可以使用CASE WHEN来实现这一点。

代码语言:javascript
运行
复制
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'
票数 1
EN

Stack Overflow用户

发布于 2022-09-16 06:58:38

我又找到了一种方法:

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73733598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档