1

私はこのような非常に複雑なテーブルを持っています:-

Snos カラム 1 カラム 2 カラム 3 カラム 4 カラム 5 カラム 6
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

ここで、その特定の年、または 2009 年、2010 年、2011 年のいずれかから p2 値が利用できないと仮定し、最後の列の値をゼロとして入れる行を複製するクエリを処理する必要があります。

だから今、私のデータベースは次のようになります -

Snos カラム 1 カラム 2 カラム 3 カラム 4 カラム 5 カラム 6
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年 AD1 C1 2010 P3 0
西暦 9 年 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 *何らかの条件*;
    その他の場合
    それで
    UPDATE tmptable_1 SET Column6 = 0;
    INSERT INTO テーブル SELECT * FROM tmptable_1;
    存在する場合は一時テーブルをドロップする tmptable_1;

しかし、それは機能していません。誰でも私を助けることができますか?

4

3 に答える 3

0

使用できるクエリの例を次に示します。

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");
于 2013-08-12T10:54:43.543 に答える