0

我的桌子看起来像:

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

我想在第一列中搜索相同值的条目(数字末尾的“C”除外),并将第二列中的较高值设置为较低的值。总是只有两个相同的值(一个带有“C”),有些对在第二列中具有相同的值,有些则不同。

查询的结果应该是:

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 回答