簡體   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