我有一个查询
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
答案 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语句可以解决问题。
更新:如果你有一个灵活的项目列表,将它们放在一个单独的表中并用外键引用它们可能会很有用。