首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中根据条件选择多列?

如何在SQL中根据条件选择多列?
EN

Stack Overflow用户
提问于 2021-10-09 20:36:30
回答 4查看 146关注 0票数 1

我有一个表,列是这样的:

代码语言:javascript
复制
| id | position | A | B | C | D | E |

我是按id选择的。如果位置是'1',它应该返回A,B,C列。如果不是,它应该返回D,E列

例如,如果表格是:

代码语言:javascript
复制
| id | position | A | B | C | D | E |
|  0 |     1    | a | b | c | d | e |
|  1 |     2    | a | b | c | d | e |

当查询选择id=0时,结果应该是:

代码语言:javascript
复制
|  0 |    1    | a | b | c |

当查询选择id=2时,结果应该是:

代码语言:javascript
复制
|  1 |    2    | d | e |

我应该如何编写SQL查询?

EN

回答 4

Stack Overflow用户

发布于 2021-10-09 20:47:24

不能使结果集的每行列数不同,因此它必须为| 1|2|d|e| NULL |。

为了得到你想要的东西,你可以执行两个查询并将它们联合在一起。否则,您可以为每一列创建一个CASE语句,但如果没有必要,请不要这样做。

如果您在这个问题上有任何选择,我建议只进行两个查询,并分别处理结果。

但是工会:

代码语言:javascript
复制
select id, position, a, b, c
from cool_table
where id in (1, 2, 3, 4, 5)
   and position = 1

UNION

select id, position, d, e, null
from cool_table
where id in (1, 2, 3, 4, 5)
   and position <> 1

真的,这看起来像是在“背道而驰”。也许可以在其他地方进行一些改进,使这一点变得不必要。

票数 0
EN

Stack Overflow用户

发布于 2021-10-09 20:47:49

您不能编写查询来根据所选行选择列。但是,如果您想要特定的列,您可以尝试这样做:

代码语言:javascript
复制
SELECT id, position, A, B, C
FROM tablename
WHERE id = 1
票数 0
EN

Stack Overflow用户

发布于 2021-10-09 21:02:42

试试这个。

代码语言:javascript
复制
select id, position,
if (id=0, A, D),
if (id=0, B, E),
if (id=0, C, "")
from Table1

这有点僵化,但这是一个开始。你可以在这里使用它:http://sqlfiddle.com/#!9/d47c33/10/0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69510393

复制
相关文章

相似问题

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