我在mysql的case语句中遇到语法错误。 1064-你的sql语句中有错误。
insert into
abc_table(release_date,title,detail,num)
select model1.release_date,model1.title,model1.detail,model1.num
CASE
WHEN model1.num= 0 THEN 3
WHEN model1.num= 1 THEN 1
WHEN model1.num= 2 THEN 2
END AS model1.num
from def_table model1
这种语法在mysql中是否正确
答案 0 :(得分:1)
model1.num
有两列:
insert into abc_table(release_date,title,detail,num)
select model1.release_date,
model1.title,
model1.detail,
model1.num -- <-- extra
CASE
WHEN model1.num= 0 THEN 3
WHEN model1.num= 1 THEN 1
WHEN model1.num= 2 THEN 2
END AS num
from def_table model1
您的代码应为:
insert into abc_table(release_date,title,detail,num)
select model1.release_date,
model1.title,
model1.detail,
CASE
WHEN model1.num= 0 THEN 3
WHEN model1.num= 1 THEN 1
WHEN model1.num= 2 THEN 2
END AS num
from def_table model1
注意:有时,格式化代码有助于发现这些错误。很难看到所有列都在一行中。
答案 1 :(得分:0)
试试这个,
你错过了一个逗号insert into
abc_table(release_date,title,detail,num)
select model1.release_date,model1.title,model1.detail,
CASE
WHEN model1.num= 0 THEN 3
WHEN model1.num= 1 THEN 1
WHEN model1.num= 2 THEN 2
END AS model1.num
from def_table model1
答案 2 :(得分:0)
此select语句中有一个额外的列..
select model1.release_date,model1.title,model1.detail,model1.num
答案 3 :(得分:0)
insert into abc_table(release_date,title,detail,num)
select m.release_date
, m.title
, m.detail
, CASE WHEN m.num = 0 THEN 3
WHEN m.num= 1 THEN 1
WHEN m.num= 2 THEN 2
END num
FROM def_table m;