我的表格如下:
[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
答案 0 :(得分: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'
答案 1 :(得分:1)
以下不是理想的解决方案,但应该做你想做的事情:
update yourTable
set value1 = (
select min(value1) from (
select * from yourTable
) as x
where yourTable.number = x.number + 'C');
我在mysql workbench中用它测试过它:
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
希望这就是你想要的:)