创建一个列,其值由 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
这是我的 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