2015-10-27 45 views
0

1問題:插入從tableB的表A where條件成立的情況下

我試圖插入來自tableB的TableA的領域,我有一個條件和一個columnA組的情況下,但它不工作。有沒有可能沒有更新?

insert into tableA 
select date, columnA 
from tableB 
where tableB.date between '2015-10-01' and '2015-10-31' 
set columnA = case 
       when columnA like ('%aaa%') then 'aaa' 
       when columnA like ('%bbb%') then 'bbb' 
       when columnA like ('%ccc%') then 'ccc' 
       when columnA like ('%ddd%') then 'ddd' 
       when columnA like ('%eee%') then 'eee' 
       else columnA 
       end 
; 

wchiquito回答和它的作品。

第二個問題:

此外,我想看到的第一個問題的情況下,我也日期和columnA要團的溶液。

我能做到這一點:

insert into tableA 
select date, case 
       when columnA like ('%aaa%') then 'aaa' 
       when columnA like ('%bbb%') then 'bbb' 
       when columnA like ('%ccc%') then 'ccc' 
       when columnA like ('%ddd%') then 'ddd' 
       when columnA like ('%eee%') then 'eee' 
       else columnA 
       end 
from tableB 
where tableB.date between '2015-10-01' and '2015-10-31' 
group by date, case 
       when columnA like ('%aaa%') then 'aaa' 
       when columnA like ('%bbb%') then 'bbb' 
       when columnA like ('%ccc%') then 'ccc' 
       when columnA like ('%ddd%') then 'ddd' 
       when columnA like ('%eee%') then 'eee' 
       else columnA 
       end 
; 

但我想看看是否有過另一種方式。避免雙重書寫案件的更好方法。

回答

1

請記住,column是保留字,請參閱9.3 Keywords and Reserved Words

請參閱:12.4 Control Flow Functions - CASE

INSERT INTO `tableA` 
SELECT `date`, CASE 
       WHEN `column` LIKE '%aaa%' THEN 'aaa' 
       WHEN `column` LIKE '%bbb%' THEN 'bbb' 
       WHEN `column` LIKE '%ccc%' THEN 'ccc' 
       WHEN `column` LIKE '%ddd%' THEN 'ddd' 
       WHEN `column` LIKE '%eee%' THEN 'eee' 
       ELSE `column` 
       END 
FROM `tableB` 
WHERE `tableB`.`date` BETWEEN '2015-01-01' AND '2015-01-04'; 

SQL Fiddle demo

+0

這一個工程。但是,如果我想使用「按列A分組」,該怎麼辦?它不會工作。 –

+0

@ApoloRadomer:誰是'columnA'?明確定義你想完成的任務,然後升級問題。包括您想要實現的表格結構,測試數據和預期結果。 – wchiquito

+0

這實際上是另外一個問題。我的目的是思考我在mySQL中無法做到的事情,所以我可以瞭解更多。 –

相關問題