2015-11-12 192 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 
相关问题