我有一个包含7列和数千行的表,我想更新与csv文件中提供的记录匹配的id号(仅保留不匹配的行)的几个行。提供的更新具有匹配的记录ID,只有三个匹配列。 我从提供的csv创建了一个临时表。在临时表中,我将匹配的id列(c1)作为索引,并使c3键。 c3中的内容是文本,并与星号一起存储。 我已经使用update,insert和join方法测试了几十个sql查询。 最接近成功结果的主要问题是更新表格的每一行中的c1和c3字段(之前有唯一和空内容),c1中的重复内容为“1”,并且“< c3中的em> option1 “。以下是表/数据的结构:
TABLE 1 (T1)
c1id, c2, c3, c4, c5, c6, c7
1 a null 05 red medium 0.070
2 b null 02 Sydney dark 0.000
3 c null null crystal null null
4 d null 02 egg dark 0.114
5 e null 03 hard bright 0.000
TABLE 2 (T2)
c1id, c3, c4, c7
1 *option1* null 0.025
2 *option1* 02 0.000
5 *option1* 09 0.751
TABLE 1 Desired Result:
c1id, c2, c3, c4, c5, c6, c7
1 a *option1* null red medium 0.025
2 b *option1* 02 Sydney dark 0.000
3 c null null crystal null null
4 d null 02 egg dark 0.114
5 e *option1* 09 hard bright 0.751
TABLE 1 ACTUAL Result:
c1id, c2, c3, c4, c5, c6, c7
1 a *option1* 05 red medium 0.070
1 b *option1* 02 Sydney dark 0.000
1 0 *option1* 08 stone dark 0.000
1 d *option1* 02 egg dark 0.114
1 e *option1* 03 hard bright 0.000
以下是一些查询尝试:
update table1, table2 set
table1.c1=table2.c1
table1.c3=table2.c3
table1.c4=table2.c4
table1.c7=table2.c7
where table1.c1=table2.c1 ;
update table1 dest, table2 src set
dest.c1=src.c1
dest.c3=src.c3
dest.c4=src.c4
dest.c7=src.c7
where dest.c1=src.c1 ;
update table1 dest, (SELECT * FROM table1 where c3=*option1*) src
SET dest.c4 = src.c4 where dest.c3=*option1*;
SELECT c1,
c3,
c4,
c7
FROM table2
INNER JOIN table1 ON table1.c1 = table2.c2
WHERE table1.c1 = table2.c1;