簡體   English   中英

MySQL根據列值選擇多列

[英]MySQL Select multiple column depending on column value

我搜索了兩次Internet和整個Stackoverlow,但沒有找到可行的解決方案。

假設我有一個包含以下列的表:a,b,c,d,e,f,g,h,i

a是一個從1到16的整數。根據此值,我必須選擇是否選擇bi。

示例:如果a = 1,我需要b,c,d,e,i。 如果a = 2我需要e,g,h,i

所以我可以使用:

SELECT
CASE a WHEN 1 THEN b WHEN 2 THEN NULL ELSE NULL END as a
....
CASE a WHEN 1 THEN NULL WHEN 2 THEN g ELSE NULL END as g

有沒有更簡單的方法,例如:

CASE a When 1 (select b,c,d,e,i)?

額外的願望:我可以根據a的值進行選擇嗎?

if a = 1 column b should be named "lol", if a = 2 b should be called "rofl".

我能想到的與您想要的最接近的是連接所需的列:

SELECT CASE a
           WHEN 1 THEN CONCAT_WS(', ', b, c, d, e, i)
           WHEN 2 THEN CONCAT_WS(', ', e, g, h, i)
       END AS result

另一個解決方案是使用UNION

SELECT a, b, c, d, e, i
FROM yourTable
WHERE a = 1
UNION
SELECT a, e, g, h, i, null
FROM yourTable
WHERE a = 2

請注意,你不能有根據的值不同列別名a 整個查詢只有一組列名。 UNION ,它們來自第一個子查詢中的列名或別名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM