gpt4 book ai didi

mysql - 如何在sql中使用like和join?

转载 作者:IT老高 更新时间:2023-10-28 12:57:59 25 4
gpt4 key购买 nike

我有 2 个表,比如表 A 和表 B,我想执行连接,但匹配条件必须是 A 中的列“就像”B 中的列,这意味着任何东西都可以在之前或之后出现B中的列:

例如:如果 A 中的列是 'foo'。如果 B 中的列是“fooblah”、“somethingfooblah”或只是“foo”,则连接将匹配。我知道如何在标准的 like 语句中使用通配符,但是在进行连接时感到困惑。这有意义吗?谢谢。

最佳答案

使用 INSTR :

SELECT *
FROM TABLE a
JOIN TABLE b ON INSTR(b.column, a.column) > 0

使用喜欢:

SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'

将 LIKE 与 CONCAT 一起使用:

SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')

请注意,在所有选项中,您可能希望在比较之前将列值驱动为大写,以确保获得匹配项而不考虑区分大小写:

SELECT *
FROM (SELECT UPPER(a.column) 'ua'
TABLE a) a
JOIN (SELECT UPPER(b.column) 'ub'
TABLE b) b ON INSTR(b.ub, a.ua) > 0

最有效的最终取决于EXPLAIN plan输出。

JOIN 子句与编写 WHERE 子句相同。 JOIN 语法也称为 ANSI JOIN,因为它们是标准化的。非 ANSI JOIN 看起来像:

SELECT *
FROM TABLE a,
TABLE b
WHERE INSTR(b.column, a.column) > 0

我不会为非 ANSI 左连接示例而烦恼。 ANSI JOIN 语法的好处在于它将连接表的内容与 WHERE 子句中实际发生的内容分开。

关于mysql - 如何在sql中使用like和join?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1386166/

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