2015-10-27 14 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中无法做到的事情,所以我可以了解更多。 –