2010-05-03 100 views
3

是否有可能獲取數據庫條目所屬列的名稱?獲取mysql條目的列

也許我有三列與列名col1,col2和col3。現在我想爲每列選擇最大條目的列,就像這樣。

Select name_of_column(max(col1,col2,col3))

我知道我可以通過它在information_schema.COLUMNS表中的順序位置來請求列的名稱,但是如何獲得表中數據庫條目的序號位置?

+0

什麼是「入口」?一列?一列的價值?行ID? – lexu 2010-05-03 13:05:00

+0

沒有在表中的條目,也許在第三行第1列條目 – 2010-05-03 13:51:52

回答

1

如果你想實現它在純SQL,您可以使用CASE語句和一個額外的變量:

SELECT @m := GREATEST(col1, col2), 
CASE @m 
     WHEN col1 THEN 'col1' 
     WHEN col2 THEN 'col2' 
END 
FROM my_table 
+0

這符合我的需求 – 2010-05-03 13:56:58

1

這將顯示從表中

SHOW COLUMNS FROM 'table'; 

然後你必須通過一個腳本語言的結果迭代列。

+0

感謝這一點,但沒有任何其他方式來獲取不使用腳本語言條目的列名? – 2010-05-03 12:21:27

1

你可以這樣做:

select 
    case true 
     when col1 > col2 and col1 > col3 then 'col1' 
     when col2 > col1 and col2 > col3 then 'col2' 
     when col3 > col1 and col3 > col2 then 'col3' 
    end 
from 
    mytable 

但是,如果最大值出現在多列中?

+0

很好的論據,但在我的特殊情況下,它是不太可能發生的 – 2010-05-03 13:48:22