如何用另一个表中的部分字符串更新行 - mysql?

时间:2017-10-11 13:05:01

标签: mysql

我需要使用table1的值更新table2,条件是匹配前3个字符。

所以我做了:

update lead_db l1
inner join option_nat n1 on n1.nat_title=left(l1.ld_naty,3)
set l1.ld_ncode=n1.nat_id

但是什么也没发生。请告诉我,我在这里做错了什么!

3 个答案:

答案 0 :(得分:1)

你可以尝试这个,如果它不起作用,请告诉我。

update lead_db l1, option_nat n1
set l1.ld_ncode=n1.nat_id
where n1.nat_title regexp left(l1.ld_naty,3)

答案 1 :(得分:0)

试试这个

UPDATE lead_db l1
INNER JOIN option_nat n1
ON n1.nat_title LIKE CONCAT(LEFT(l1.ld_naty,3), '%')
SET l1.ld_ncode = n1.nat_id

因为如果他们的值是ABCDEFABC123ABCDEFABC之间的比较是错误的!但是,如果您尝试ABCDEF LIKE "ABC%",它将有效...

答案 2 :(得分:0)

没有发生任何事情的原因是因为数据库无法执行您要告诉它的连接。如果nat_title超过3个字符(就像您在评论中所说的那样),则无法加入任何内容。

示例:假设nat_title包含值“这是一个示例”,ld_naty仅包含“Thi”。你现在正试图在“Thi”上加入“这是一个例子”,这显然不起作用,因为它不一样。

你需要这样的东西:

UPDATE lead_db l1
INNER JOIN option_nat n1 on n1.nat_title LIKE CONCAT(LEFT(l1.ld_naty,3), '%')
SET l1.ld_ncode = n1.nat_id

但请确保这真的是你想要的。因为现在“这是一个例子”将加入任何以字母“Thi”开头的(并且它甚至不区分大小写,所以“tHi”也是一个有效的连接。) / p>