0

私のテーブルは次のようになります。

[Number]     [Value1]
1234567         8
1234567C        7
9876543         1
9876543C        2
5555555         3
5555555C        3

最初の列で同じ値のエントリを検索し (数字の末尾の「C」を除く)、2 列目の高い値を低い値に設定したいと考えています。同じ値は常に 2 つ (1 つは "C") だけで、2 番目の列の値が同じペアもあれば、異なるペアもあります。

クエリの結果は次のようになります。

Number          Value1
1234567           7
1234567C          7
9876543           1
9876543C          1
5555555           3
5555555C          3
4

2 に答える 2

1

実際には、値が2つしかないため、チェックする必要はありません(したがって、クエリはさらに単純です)。

UPDATE 
    table
SET
    Value1 = 
    (
        SELECT
            MAX(Value1)
        FROM
            table t
        WHERE
            table.Number = t.Number 
            OR table.Number = t.Number + 'C' 
    )
WHERE
    RIGHT(Number, 1) != 'C'
于 2013-01-28T10:47:48.700 に答える
1

以下は理想的な解決策ではありませんが、必要なことを行う必要があります。

update yourTable
set value1 = (
select min(value1) from (
select * from yourTable
) as x
where yourTable.number = x.number + 'C');

私はmysqlワークベンチでこれをテストしました:

create table yourTable(number varchar (10),value1 int);
insert into yourTable Values('1234567',8);
insert into yourTable Values('1234567C',7);
insert into yourTable Values('9876543',1);
insert into yourTable Values('9876543C',2);
insert into yourTable Values('5555555',3);
insert into yourTable Values('5555555C',3);
insert into yourTable Values('55555556',10);
insert into yourTable Values('55555556C',2);

次にselect * from yourTable;戻ります:

1234567     8
1234567C    7
9876543     1
9876543C    2
5555555     3
5555555C    3
55555556    10
55555556C   2

更新後は次のselect * from yourTable;ようになります。

1234567     7
1234567C    7
9876543     1
9876543C    1
5555555     3
5555555C    3
55555556    2
55555556C   2

それがあなたが望んでいたことを願っています:)

于 2013-01-28T14:19:28.340 に答える