创建一个列,其值由 CASE 结果确定

create a columns with a value determined by the CASE result

这是我的 table:

CREATE TABLE IF NOT EXISTS numbers (
  num int(6) unsigned NOT NULL
) DEFAULT CHARSET=utf8;

INSERT INTO numbers (num) VALUES
  ('1'),
  ('2'),
  ('3'),
  ('4'),
  ('5');

这就是我想通过在 num 中为 1 或 2 添加 TRUE 而为其他所有内容添加 FALSE 来从中得到的:

| num | is_1_2
| --- | -------
| 1   | true
| 2   | true
| 3   | false
| 4   | false
| 5   | false

这是我的要求

SELECT num, (CASE WHEN  num IN (1,2)  THEN 'true' ELSE 'false') AS is_1_2
FROM numbers

但我明白了

Query Error: Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AS is_1_2 FROM numbers' at line 1

不明白为什么。

你忘了结束

SELECT num, (CASE WHEN  num IN (1,2)  THEN 'true' ELSE 'false' END) AS is_1_2
FROM numbers

你好像是运行MySQL。如果您满足于将 true/false 值表示为 1 和 0,则可以将查询简化为:

select num, num in (1, 2) as is_1_2 from numbers

这利用了以下事实:MySQL 在数字上下文中将真条件评估为 1,将假条件评估为 0

你最后错过了一个 END。您可以阅读有关 CASE 语句的更多信息 here

SELECT 
 num, 
 is_1_2 = CASE 
   WHEN  num IN (1,2) 
   THEN 'true' 
   ELSE 'false' 
 END
FROM numbers