2011-10-27 71 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這個答案,因爲垂直對齊使得代碼比被接受的答案的水平對齊更容易理解。 –

相關問題