2014-01-29 66 views
2

的價值我有一個表可以說MySQL的第一個基於參數值來選擇列,然後

表1

t_id A B C 

100 1 1 0 

101 1 0 1 

102 1 1 0 

現在我已經基於輸入參數參數0上首先我必須選擇列(讓說B),然後使用t_id值(可以說101)我將選擇該選定的列(這是0)的值。

我想創建單個查詢,因爲我將在連接查詢中使用它。

以上是可能的,如果是的話如何編寫相同的sql?

+0

'從table1中選擇B,其中t_id = 101' –

回答

2

在MySQL中,這是最容易與case語句來完成:

select (case when @param0 = 'A' then A 
      when @param0 = 'B' then B 
      when @param0 = 'C' then C 
     end) as val 
from table t 
where id = @t_id; 

其實,它是最容易case語句幾乎任何數據庫中完成。

+0

爲我工作,也在加入聲明中,謝謝。 – Ajax

2

這對SQL服務器有效。我不知道這是否會在MySQL的 你可以做到這一點很容易被unpivoting的數據,然後選擇列,並使用TID參數where條款 對於MySQL,你或許應該看看this article在計算器

SELECT Colvalue FROM (
SELECT t_id, ColName, ColValue 
FROM 
    (SELECT t_id,A,B,C FROM tablename) t 
UNPIVOT 
    (Colvalue FOR ColName IN (A,B,C))AS unpvtt) 
WHERE [email protected] AND [email protected] 
相關問題