2011-11-29 27 views
3

我有一個查詢如何在Mysql中替換SELECT statemnt的輸出?

SELECT id, descr Category, parent_id `Department`, updated `Updated` 
    , updatedby `By` 
FROM category 

這在列PARENT_ID返回的數字。它只能在parent_id列中返回三個數字(167,154,164)中的一個。我想用這些數字代替:

164 - Advertisemnt 
167 - Modeling 
154 - Finance 

這怎麼能實現? 所以,這個表應該是這樣的:

id category Department Updated By 

1 Network Modeling now() Me 

回答

6

用作CASE語句是這樣的:

SELECT id 
     ,descr AS `Category` 
     ,CASE parent_id 
     WHEN 164 THEN 'Advertisemnt' 
     WHEN 167 THEN 'Modeling' 
     WHEN 154 THEN 'Finance' 
     ELSE   'Unknown partent_id' 
     END AS `Department` 
    ,updated AS `Updated` 
    ,updatedby AS `By` 
FROM category 
+0

+1 CASE更適合那麼IF –

1

確定的部門名稱不可用,在一個表中?

如果你想硬編碼的部門名稱,你可以這樣做:

SELECT id, descr Category, 
     case parent_id when 154 then 'Finance' 
         when 164 then 'Advertisement' 
         when 167 then 'Modeling' 
     end case "Department", 
     updated "Updated", updatedby "By" 
    FROM category 
0

更新:我忘了的話,我覺得更適合,看到其他的答案。

使用IF

SELECT id, descr as Category, 
if(parent_id='164', 'Advertisemnt', 
    if(parent_id='167','Modeling', 
     if(parent_id='154, 'Finance', '') 
    ) 
) as Department, updated as Updated, updatedby as By FROM category; 

這些字符串不能從另一個表看? Thay在腳本中是硬編碼的?

0

我認爲像here這樣的CASE語句應該可以做到。

更新:如果您有一個靈活的項目列表,將它們放在單獨的表格中並使用外鍵引用它們可能會很有用。

+0

@Erwin打我吧:) –

相關問題