gpt4 book ai didi

mysql 选择性产品插入(如果不存在)

转载 作者:行者123 更新时间:2023-11-29 23:56:06 25 4
gpt4 key购买 nike

我想将一个表 products (table1) 中的行和名为 text 的列插入到第二个表中,其中该表没有相同的行值使用(类似)的 text2 列我指的是 wp_posts (table2) 表。

第一个表:table1

id   |  text   
-------------
1 t1
2 t2
3 t3
4 t4
5 t5
6 t6
7 t7
8 t8
....

第二个表:table2

id  |   text2
--------------
1 t1
2 t4
3 t6 t62
4 t8
5 t9
...

选择后的预期结果:

id  |   text2
--------------
1 t2
2 t3
3 t5
4 t7
...

我想将这个结果插入到table2中

插入到tabel2后的预期结果:

id   |  text   
-------------
1 t1
2 t2
3 t3
4 t4
5 t5
6 t6 t62
7 t7
8 t8
9 t9
....

我想将这个结果插入到表 2 中,其中缺少这些值。

我尝试了这样的方法,但是由于数据表中的数据量很大,超过 180000 个条目,这需要很长时间:

INSERT INTO table2 (text2)
SELECT t1.text,
FROM table1 t1
JOIN table2 t2 ON t1.text LIKE CONCAT('%', t2.text2 ,'%')

或者我该如何做这样的事情?:

SELECT text
FROM tabel1
WHERE NOT EXISTS (SELECT text2
FROM tabel2
WHERE text2 LIKE tabel1.text ????)

或者有其他想法来解决这个问题?

最佳答案

我会使用您的第一个查询,但您的逻辑是从后到前的:您正在选择存在的行,而不是不存在的行。

试试这个:

INSERT INTO table2 (text2)
SELECT t1.text,
FROM table1 t1
LEFT JOIN table2 t2 ON t1.text LIKE CONCAT('%', t2.text2 ,'%')
WHERE table2.text2 IS NULL

此左联接将选择所有匹配的行,因为错过联接的列全部为空。

关于性能,此查询已经达到了最佳水平,但是您可以通过启动事务、锁定目标表、运行查询然后提交来使其运行得更快。

如果这还不够快,请尝试导出查询结果,然后在单独的步骤中将它们导入到目标表中。

关于mysql 选择性产品插入(如果不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25349387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com