2011-10-27 136 views
2

我需要从现有TABLE中导出数据。直到最近我用 -SQL:如何根据第三个字段选择两个字段中的一个

SELECT item_ID, item_Info, ...moreFields... FROM tableName WHERE myCondition=0 

现在,他们改变了表结构,并增加了新的领域 “item_Info2”

当他们在填写表格:

  • 如果 “ITEM_TYPE” 是1或2或3或4,则“item_Info”是相关
  • 如果“ITEM_TYPE”是5,然后“item_Info”是空的,我需要“item_Info2”为我的查询结果,而不是“item_Info”

什么是相应的SELECT命令?

[similiar问题:mysql select any one field out of two with respect to the value of a third field

从这个例子,我不能看到语法选择moreFields]

感谢,

Atara。

回答

8

您可以将CASE语句视为任何其他列名称,用逗号将它与其他列分隔开来等。CASE中发生的情况应该被视为单个列名称,在您的情况下,您需要逗号前后加逗号它。

SELECT item_ID, CASE WHEN item_Type = 5 THEN item_info ELSE item_info2 END, field_name, another_field_name ...moreFields... FROM tableName WHERE myCondition=0 

,你也可以使用别名来会更容易得到从查询结果:

SELECT item_ID, CASE WHEN item_Type = 5 THEN item_info ELSE item_info2 END AS 'item_info', field_name, another_field_name ...moreFields... FROM tableName WHERE myCondition=0 
2

要编辑的其他问题的答复:

SELECT 
    item_id, item_otherproperty, 
    CASE WHEN item_Type= 5 
    THEN item_Info2 
    ELSE item_Info 
    END AS `info` FROM table ... 
+0

Upvoted这个答案,因为垂直对齐使得代码比被接受的答案的水平对齐更容易理解。 –

相关问题