2013-01-17 84 views
0

我在mysql中的case語句中出現語法錯誤。 1064-你的sql語句有錯誤。在mysql查詢語句中出現語法錯誤

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正確

回答

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 

注:有時,格式化你的代碼將有助於找到這些錯誤。當所有列都在一行中時很難看到。

+0

是的,它是gving我一個語法錯誤 –

+0

現在固定的,看到這個小提琴 - http://www.sqlfiddle.com /#!2/056ea – Taryn

+0

@Strawberry的語法錯誤是固定的 – Taryn

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 
0

你有這個select語句一個額外的列..

select model1.release_date,model1.title,model1.detail,model1.num 
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;