使用 CASE 语句将值插入 SQLite 中的多个列
Using CASE statement to INSERT values into multiple columns in SQLite
我正在尝试使用 INSERT 语句将值添加到新 table 中的几列,具体取决于另一个 table 中列的值。我正在用 SQLite 编写。我受到这个问题 的启发,该问题在其中一列中使用了 CASE 语句,但我想应用于我添加的所有列。
我写的代码类似于:
CREATE TABLE machine_info (
MachineType TEXT,
MaxPower INTEGER,
Frequency REAL);
INSERT INTO machine_info (MachineType, MaxPower, Frequency)
VALUES (
CASE WHEN parts.Machine = "A" THEN "Diode", 200, 60
WHEN parts.Machine = "B" THEN "AC", 500, 50
WHEN parts.Machine = "C" THEN NULL, 500, NULL
);
错误消息显示 Result: near ",": syntax error
。我是否将 CASE 语句包装在了错误的位置?
您可以使用 INSERT INTO ... SELECT
,但 3 列中的每一列都需要 CASE
表达式:
INSERT INTO machine_info (MachineType, MaxPower, Frequency)
SELECT
CASE Machine WHEN 'A' THEN 'Diode' WHEN 'B' THEN 'AC' END,
CASE Machine WHEN 'A' THEN 200 WHEN 'B' THEN 500 WHEN 'C' 500 END,
CASE Machine WHEN 'A' THEN 60 WHEN 'B' THEN 50 END
FROM machine_info
WHERE Machine IN ('A', 'B', 'C');
我正在尝试使用 INSERT 语句将值添加到新 table 中的几列,具体取决于另一个 table 中列的值。我正在用 SQLite 编写。我受到这个问题
我写的代码类似于:
CREATE TABLE machine_info (
MachineType TEXT,
MaxPower INTEGER,
Frequency REAL);
INSERT INTO machine_info (MachineType, MaxPower, Frequency)
VALUES (
CASE WHEN parts.Machine = "A" THEN "Diode", 200, 60
WHEN parts.Machine = "B" THEN "AC", 500, 50
WHEN parts.Machine = "C" THEN NULL, 500, NULL
);
错误消息显示 Result: near ",": syntax error
。我是否将 CASE 语句包装在了错误的位置?
您可以使用 INSERT INTO ... SELECT
,但 3 列中的每一列都需要 CASE
表达式:
INSERT INTO machine_info (MachineType, MaxPower, Frequency)
SELECT
CASE Machine WHEN 'A' THEN 'Diode' WHEN 'B' THEN 'AC' END,
CASE Machine WHEN 'A' THEN 200 WHEN 'B' THEN 500 WHEN 'C' 500 END,
CASE Machine WHEN 'A' THEN 60 WHEN 'B' THEN 50 END
FROM machine_info
WHERE Machine IN ('A', 'B', 'C');