提问者:小点点

通过更新MYSQl中的值插入重复行


我有一张非常复杂的表格,是这样的:-

Snos   Column1 Column2 Column3 Column4 Column5 Column6
1      AD       AD1     C1      2011    P1     6435200
2      AD       AD1     C1      2010    P1     234
3      AD       AD1     C1      2009    P1     6435
4      BD       AD2     C2      2010    P2     198448333
5      CD       AD3     C3      2011    P3     194414870

现在,我需要处理一个查询,该查询应该重复一个行,其中假设p2值对于该特定年份或从2009年、2010年或2011年中的任何年份都不可用,并将最后一列的值作为零放入其中。

所以现在我的数据库看起来应该像-

Snos   Column1 Column2 Column3 Column4 Column5 Column6
1      AD       AD1     C1      2011    P1     6435200
2      AD       AD1     C1      2010    P1     234
3      AD       AD1     C1      2009    P1     6435
4      AD       AD1     C1      2011    P2     0
5      AD       AD1     C1      2010    P2     0
6      AD       AD1     C1      2009    P2     0
7      AD       AD1     C1      2011    P3     0
8      AD       AD1     C1      2010    P3     0
9      AD       AD1     C1      2009    P3     0
10     BD       AD2     C2      2010    P2     198448333
11     BD       AD2     C2      2009    P2     0
12     BD       AD2     C2      2011    P2     0
13     BD       AD2     C2      2010    P1     0
14     BD       AD2     C2      2009    P1     0
15     BD       AD2     C2      2011    P1     0
16     BD       AD2     C2      2010    P3     0
17     BD       AD2     C2      2009    P3     0
18     BD       AD2     C2      2011    P3     0
19     CD       AD3     C3      2011    P3     194414870
20     CD       AD3     C3      2009    P3     0
21     CD       AD3     C3      2010    P3     0
22     CD       AD3     C3      2011    P1     0
23     CD       AD3     C3      2009    P1     0
24     CD       AD3     C3      2010    P1     0
25     CD       AD3     C3      2011    P2     0
26     CD       AD3     C3      2009    P2     0
27     CD       AD3     C3      2010    P2     0

我试着使用临时表


    CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE *Some Condition*;
    Some If Else
    Then
    UPDATE tmptable_1 SET Column6 = 0;
    INSERT INTO table SELECT * FROM tmptable_1;
    DROP TEMPORARY TABLE IF EXISTS tmptable_1;

但它不起作用。有谁能帮我。


共1个答案

匿名用户

下面是一个可以使用的查询示例:

insert into tablename (Column1, Column2, Column3, Column4, Column5, Column6) 
select "BD","AD2","C2", column4,"P2","0" 
from tablename where 
column4 in (select distinct column4 from test) 
and column4 not in (select distinct column4 from test where column5 = "P2");