[英]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.