2015-11-12 244 views
0

我想從表detail上的一列value中選擇多條數據,其中同一個表上的相鄰列是特定值。MySQL從不同條件的同一列中選擇多個值

例如:

field_number | value 
-------------------- 
     40 | 820 
     41 | 548 
     44 | 100 

我需要從detail.value這樣所有返回3個選擇值,以獲得滿意的結果,其中包括:

"Balance Amount" | "Convo. Amount" | "Chapter ID" 
------------------------------------------------- 
     820  |  100  |  548 

這是一個大的查詢的一部分連接3個表格以將這些值拉到多個條件值,我只是不知道引用相同table.value以及每個返回的特定條件的最佳方式。如果有幫助,我可以提供額外的查詢語法,但上述情況突出顯示了重點。如果使優雅的解決方案進一步複雜化,我也不一定需要擁有「餘額」,「Convo。Amount」和「Chapter ID」別名。

任何幫助或您可以提供的見解將不勝感激。

+0

的easyest方法是使用子查詢,但是,如果查詢是很有條理,這可以減緩執行。 – genespos

+0

有什麼好運氣? –

回答

0

事情是這樣的:

SELECT case when field_num=40 then value as 'Balance Amount' END, 
case when field_num=41 then value as 'Convo. Amount' END, 
case when field_num=44 then value as 'Chapter ID' END 
from [table] 

會爲你做它。但是這不是非常可靠,除非你肯定這些是field_num中的值。

+0

對於MySQL(至少在5.5版本中),您需要省略「value as」,並且在最後一個case後面還有一個「else」子句。 Doc位於https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#operator_case – TextGeek

0

不是非常優化,但你可以使用它。請注意,MySQL的值爲reserved word

SELECT 
    (SELECT `value` FROM detail WHERE field_number = 40) AS 'Balance Amount', 
    (SELECT `value` FROM detail WHERE field_number = 44) AS 'Convo. Amount', 
    (SELECT `value` FROM detail WHERE field_number = 41) AS 'Chapter ID'; 

結果:

Balance Amount Convo. Amount Chapter ID 
820    100    548 
相關問題