2013-08-12 26 views
1

您好我看過這些論壇,我需要幫助獲取基於值的列名稱。SQLITE查詢根據列的值檢索列名

比如我有一個表,如:

|Name | Column1 | Column2 | Column3| 
|-----------------------------------| 
|Peter | 100  | 120  | 92  | 
|-----------------------------------| 
|James | 110  | 105  | 88  | 
|-----------------------------------| 
|David | 90  | 112  | 98  | 

我想要做彼得的查詢,其中值是92,我需要查詢返回欄3。

我知道非常基本的SQL,並沒有真正使用sqlite深入瞭解它。

我搜索,我發現最好的是這個線程,它有一個解決方案,在mysql上工作:Get column name dynamically by Specific row value

我測試了這個,它正是我想要的。 當然,它不適用於sqlite。

我需要知道這是否可以使用sqlite完成,如果是這樣,什麼是正確的語法? 我再次知道非常基本的SQL。

如果有人有任何提示/建議,我很感激。

+0

多少列在表中? – peterm

+1

您使用什麼編程語言來訪問SQLite? SQLite有一個內置的方法來從結果集列中檢索列名,因爲它至少用簡單的SELECT和JOIN查詢來跟蹤源列。 – Anurag

+0

我忘了提及我在C#中開發並使用ADO.NET 2.0 Provider for SQLite(http://sourceforge.net/projects/sqlite-dotnet2/),我很久以前就下載了它。如果有更好的選擇比我使用的更好,我是所有的耳朵,但到目前爲止,它工作正常。我想我必須查看你提到的這種內置方法,我只是好奇,如果有人知道這樣做的好方法。最糟糕的情況是,我可以檢索完整的結果並執行應用內編碼來完成我想要的功能,但寧可在SQL結束時執行。 – SmalekTF

回答

1

如果列很少,名固定,你可以這樣做: -

select case when col1 == 92 then col1 
      when col2 == 92 then col2 
      when col3 == 92 then col3 
     end 
    from tab; 
+0

有18列,所以它可能有點醜,雖然它仍然是一個選項。謝謝。 – SmalekTF

+0

在這種情況下,也許甚至@Anurag爲此提出了正確的方法。 – Himanshu

+0

我試過上面發佈的sql語句並且得到錯誤,sqlite3的語法是否正確? – SmalekTF