对于以下SQL查询:
SELECT `bh`.`bug_id`, `p`.`name` AS `project`, `p2`.`name` AS `portfolio`, `u`.`username` AS `user`,FROM_UNIXTIME( `bh`.`date_modified` ) AS `modify_ts`,
`b`.`severity`, `b`.`priority`, `b`.`resolution`, `b`.`Status`
FROM `bug`.`mantis_bug_history_table` AS `bh`
LEFT JOIN `bug`.`mantis_bug_table` `b` ON `bh`.`bug_id` = `b`.`id`
LEFT JOIN `bug`.`mantis_user_table` `u` ON `bh`.`user_id` = `u`.`id`
LEFT JOIN `bug`.`mantis_project_table` `p` ON `b`.`project_id` = `p`.`id`
LEFT JOIN `bug`.`mantis_project_hierarchy_table` `ph` ON `b`.`project_id` = `ph`.`child_id`
LEFT JOIN `bug`.`mantis_project_table` `p2` ON `ph`.`parent_id` = `p2`.`id`
WHERE `bh`.`field_name` = "status"
AND `bh`.`old_value` = 80
AND `bh`.`new_value` = 50
我想返回" b
。severity
,b
。priority
"的价值。作为名字。所以目前他们将返回一个值,如20,40,60的严重性和优先级将具有值30,60,90。我想要做的是说,如果严重性值= 20,则将其称为sev1,40然后将其称为sev 2,对于优先级同样相同。
我将如何在上述查询中进行更改?
非常感谢您的帮助
答案 0 :(得分:1)
联合查找表会更灵活,但硬编码看起来像这样:
SELECT
bh.*
, CASE
WHEN b.severity = 20 THEN 'Sev1'
WHEN b.severity = 40 THEN 'Sev2'
WHEN b.severity = 60 THEN 'Sev3'
WHEN b.severity = 80 THEN 'Sev4'
ELSE 'v.low'
END AS SeverityLbl
, CASE
WHEN b.priority = 30 THEN 'Priority1'
WHEN b.priority = 60 THEN 'Priority2'
WHEN b.priority = 90 THEN 'Priority3'
ELSE 'v.low'
END AS PriorityLbl
FROM mantis_bug_history_table bh
LEFT JOIN mantis_bug_table b
ON bh.bug_id = b.id
答案 1 :(得分:0)
在SELECT子句中使用CONCAT()函数来获取b.severity,b.priority"作为名称