表值的MYSQL填充列

时间:2018-11-14 18:39:55

标签: mysql mariadb

我有一个带有这些值的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之类的东西?

谢谢

1 个答案:

答案 0 :(得分:0)

类似的东西可能会起作用:

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;