mysql从表值填充列

cnjp1d6j  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(262)

我有一个mysql表,其中包含以下值:

Filename  value
FileA1    11
FileA2    12
FileA3    13
FileA4    14
FileA5    15
FileA6    16
FileA7    17
FileA8    18
FileB1    21
FileB2    22
FileB3    23

我希望该表用filea(4-8)的值填充缺少的fileb(4-8),如下所示:

Filename  value
FileA1    11
FileA2    12
FileA3    13
FileA4    14
FileA5    15
FileA6    16
FileA7    17
FileA8    18
FileB1    21
FileB2    22
FileB3    23
FileB4    14
FileB5    15
FileB6    16
FileB7    17
FileB8    18

这是mysql命令可以实现的还是必须像那样使用php?
谢谢

31moq8wy

31moq8wy1#

像这样的方法可能有效:

select a.filename, a.value
from <table> a

union

select replace(a.filename, 'FileA', 'FileB'), a.value
from <table> a
    left join <table> b on a.filename = replace(b.filename, 'FileB', 'FileA')
where a.fileName like 'FileA'
and b.filename is null;

正确答案

select a.filename, a.value
from testtable a

union

select replace(a.filename, 'FileA', 'FileB'), a.value
from testtable a
    left join testtable b on replace(a.filename, 'FileA', 'FileB') = b.filename
where a.fileName like 'FileA%'
and b.filename is null;

用缺失的数据填充

insert into testtable (fileName, value)
select replace(a.filename, 'FileA', 'FileB'), a.value
from testtable a
    left join testtable b on replace(a.filename, 'FileA', 'FileB') = b.filename
where a.fileName like 'FileA%'
and b.filename is null;

相关问题