如何在Mysql中替换SELECT语句的输出?

时间:2011-11-29 15:52:04

标签: mysql sql

我有一个查询

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

更新:我忘了CASE,我觉得更合适,请看其他答案。

使用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在脚本中是硬编码的吗?

答案 3 :(得分:0)

我认为像here这样的CASE语句可以解决问题。

更新:如果你有一个灵活的项目列表,将它们放在一个单独的表中并用外键引用它们可能会很有用。