【发布时间】:2011-01-22 02:09:03
【问题描述】:
我有一个 MySQL 查询,我希望它返回一个伪列,该列基于:
- 如果 columnW 不等于 0,则应该是 1 BUT
- 如果 columnX 不等于 0,则应为 2 BUT
- 如果 columnY 不等于 0,则应该是 3 BUT
- 如果 columnZ 不等于 0,则应为 4
希望这是有道理的。我的 SQL 不够好,无法解决这个问题。
【问题讨论】:
标签: sql mysql conditional
我有一个 MySQL 查询,我希望它返回一个伪列,该列基于:
希望这是有道理的。我的 SQL 不够好,无法解决这个问题。
【问题讨论】:
标签: sql mysql conditional
您可以使用 CASE ... WHEN 来执行此操作。
见
mysql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
-> 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
-> NULL
【讨论】:
尝试使用case expression:
SELECT CASE WHEN columnZ <> 0 THEN 4
WHEN columnY <> 0 THEN 3
WHEN columnX <> 0 THEN 2
WHEN columnW <> 0 THEN 1
ELSE 0
END AS your_alias_name
FROM ...
【讨论】: