2013-05-07 122 views
1

我想根據mysql中的列值命名列別名。那可能嗎?基於列值的動態列別名

類似這樣;

select 
    case when answer_type = 'RB' then 
    answer_type as 'radio' 
else 
    answer_type as 'evrything_else' 
end case 
from XTable 
+0

如果您想擁有動態別名,則需要創建動態查詢。 – 2013-05-07 16:04:53

回答

1

不,這在純SQL中不可行。您可能必須查詢數據,然後在執行查詢的任何應用程序中處理它。

1
select if(answer_type="RB",true,NULL) as radio, 
if(answer_type != ="RB",true,NULL) as everything_else 
from XTable; 

你必須爲你得到結果的表,其中從選擇的名稱或別名是列標籤來分割。這個方法可以讓你檢查返回的radio值(和everything_else的值)。

你正在試圖做的,看有沒有辦法讓列標題的工作是什麼:

id | radio MAGICAL OR everytning_else | 
1 | RB        | 
2 | NOT_RB       | 

什麼我的方法會爲你做:

id | radio | everything_else | 
1 | true | NULL   | 
2 | NULL | true   | 
+0

是的,我知道這個解決方案。但我想知道在單欄中做到這一點的方法 – 2013-05-07 16:29:26

0

選擇,如果(answer_type =作爲來自XTable的answer_type的「RB」,「radio」,if(answer_type!=「RB」,'everything_else',NULL));