我有两个表要加入
Domain
和 Links
分别有 1k 行和 700k 行
create table Domain (url varchar(255), tag varchar(255));
create table Links (ShortURL varchar(255), LongURL varchar(255));
输出应该在 Links.LongURL
中找到的所有字符串 Domain.url
的部分匹配上连接,结果应该从 Links< 返回 700k 行
表,没有找到匹配项的地方应该是 null
SELECT ShortURL,LongURL,tag
FROM Links fulljoin Domain
ON Links.LongURL LIKE concat('%', Domain.url, '%');
最佳答案
这将是一项耗时的操作。您的查询是正确的,但正确的语法是:
SELECT ShortURL, l.LongURL, tag
FROM Links l LEFT JOIN
Domain d
ON l.LongURL LIKE concat('%', d.url, '%');
也就是说,对于您的两个表,此查询将需要一段时间。它需要使用 like
进行大约 700,000,000 次比较。没有简单的方法可以加快查询速度。
关于mysql - 基于字符串的部分匹配连接 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026673/