考虑下面的简单MySQL表:
| Answer |
| ---------------- |
| Extremely likely |
| Likely |
| Likely |
| Not a chance |
| Likely |
| Potato |
| Unlikely |
我想从该表向SELECT写一个查询,该查询将所有出现的“极有可能”替换为1,将“很可能”替换为2,将“不太可能”替换为3,将“没有机会”替换为4。
所有其他答案都不应转换。
因此结果将是:
| Answer |
| ------ |
| 1 |
| 2 |
| 2 |
| 4 |
| 2 |
| Potato |
| 3 |
可以仅使用SQL来完成吗?
在回答了这个问题之后,我意识到只有在另一个字段具有特定值时,我才需要这样做。这是一张桌子:
| QuestionID | Answer |
| ---------- | ---------------- |
| how_likely | Extremely likely |
| how_likely | Likely |
| how_likely | Likely |
| fave_veg | Potato |
我成功使用的查询是:
SELECT QuestionID,
IF(
QuestionID = 'how_likely',
CASE Answer
WHEN 'Extremely likely' THEN 1
WHEN 'Likely' THEN 2
WHEN 'Unlikely' THEN 3
WHEN 'Not a chance' THEN 4
END,
Answer
) AS Answer
FROM `answers`
SELECT CASE answer
WHEN 'Extremely Likely' THEN 1
WHEN 'Likely' THEN 2
WHEN 'Unlikely' THEN 3
WHEN 'Not a chance' THEN 4
ELSE answer
END As new_answer
FROM your_table
编辑:如果您有很多[动态]替换要做,那么您可能会发现此方法过于繁琐以至于无法维护。在这些情况下,您应该创建一个查询表,可以执行以下OUTER JOIN
操作:
SELECT Coalesce(lookup_values.new_answer, your_table.answer) As new_answer
FROM your_table
LEFT
JOIN lookup_values
ON lookup_values.answer = your_table.answer
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句