gpt4 book ai didi

mysql - 当 table1 结果不匹配时连接 table2

转载 作者:行者123 更新时间:2023-11-29 10:37:00 24 4
gpt4 key购买 nike

我有一个小 table1,其路径如 foo/bar

我有一个很大的 table2,其中包含完整的网址,例如 https://www.google.com/foo/bar/

我想选择 table1 路径,但 table2 中的完整网址中不存在该路径。

我尝试使用 REGEXP 进行 JOIN,但查询速度非常慢,而且我可能选择了错误的联接:

SELECT t1.path
FROM table1 AS t1
RIGHT JOIN `table2` AS t2
ON ( REPLACE(t1.path, '/', '\\/') REGEXP ".+" + t2.url + ".*" )
WHERE t1.path != ""
ORDER BY t1.id DESC
LIMIT 10

带有 NOT IN 的子查询可能会有所帮助,但我不确定如何使用第一个查询的结果路径:

SELECT path
FROM `table1`
WHERE path != ""
NOT IN (
SELECT url FROM `table2` WHERE url LIKE "%" + [path of query 1] + "%"
)
ORDER BY id DESC
LIMIT 10

如何解决这个问题?

最佳答案

您可以像这样使用 LIKE 子查询

SELECT path
FROM `table1`
WHERE TRIM(path) <> ''
AND NOT EXISTS (
SELECT url FROM `table2` WHERE url LIKE CONCAT('%', t1.path, '%')
)
ORDER BY id DESC
LIMIT 10

但正如 Gordon Linoff 已经指出的那样,您的数据不适合快速连接。此查询会很慢,因为使用字符串的 LIKE 操作非常昂贵。

关于mysql - 当 table1 结果不匹配时连接 table2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46238720/

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