繁体   English   中英

如何根据 SQL 中的条件来 select 多列?

[英]How to select multiple columns based on a condition in SQL?

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

| id | position | A | B | C | D | E |

我是按 id 选择的。 如果 position 为“1”,则应返回 A、B 列,C。否则,应返回 D、E 列

例如,如果表是:

| id | position | A | B | C | D | E |
|  0 |     1    | a | b | c | d | e |
|  1 |     2    | a | b | c | d | e |

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

|  0 |    1    | a | b | c |

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

|  1 |    2    | d | e |

我应该如何编写 SQL 查询?

您不能拥有每行具有不同列数的结果集,因此它必须是 | 1 | 2 | d | 电子 | NULL |。

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

如果您对此有任何选择,我建议您只进行两次查询并分别处理结果。

但是工会:

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

不过,实际上,这似乎是在“违背常理”。 也许可以在其他地方进行一些改进,从而使这一点变得不必要。

您不能根据所选行向 select 列写入查询。 但如果你想要特定的列,你可以试试这个:

SELECT id, position, A, B, C
FROM tablename
WHERE id = 1

尝试这个...

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

数据库查询不是放置显示逻辑的地方。 正如其他人所说,查询具有固定数量的字段。

您可以根据position字段使用ifcase到 null 字段,但将 select 所有字段发送到前端,让它解决如何显示结果会更简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM