1

我在 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中是否正确

4

4 回答 4

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

注意:有时,格式化您的代码将有助于发现这些错误。当所有列都在一行中时,可能很难看到。

于 2013-01-17T10:10:11.207 回答
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;
于 2013-01-17T10:16:28.587 回答
0

您在此选择语句中有一个额外的列..

select model1.release_date,model1.title,model1.detail,model1.num
于 2013-01-17T10:11:09.403 回答
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
于 2013-01-17T10:09:55.110 回答