【问题标题】:MySQL join query using like?MySQL连接查询使用like?
【发布时间】:2010-12-28 04:45:34
【问题描述】:

我一直试图让它工作很长一段时间,但它似乎不起作用,也许甚至不可能,我想要做的是使用 like 执行 MySQL 连接查询,比如我发现的这个例子……

SELECT *
FROM Table1
INNER JOIN Table2 ON Table1.col LIKE '%' + Table2.col + '%'

但它似乎根本不起作用,任何可以提供的帮助都会很棒,谢谢!

【问题讨论】:

    标签: mysql join sql-like


    【解决方案1】:

    试试

    SELECT *
    FROM Table1
    INNER JOIN Table2 ON Table1.col LIKE CONCAT('%', Table2.col, '%')
    

    MySQL 的字符串连接与其他数据库不同,因此,如果您想移植您的应用程序,您需要有一个备用版本,其中 || 用作连接运算符,正如 Michael 在另一个答案中提到的那样。但是这个运算符在 MySQL 中不起作用,因为它表示 or

    【讨论】:

    • ok 现在可以工作了,但是当它应该返回更多时它只返回几行,就像它只使用 table1 中的第一行一样?
    • 我意识到这篇文章已经很老了,但是,当我用字符串替换 concat 函数中的列时,结果翻了两番。知道为什么吗?
    【解决方案2】:

    这个怎么样:

    SELECT * FROM Table1, Table2 WHERE Table1.col LIKE '%'+Table2.col+'%';
    

    由于您无论如何都要从两个表中选择所有内容,这可能会让您到达那里。

    【讨论】:

      【解决方案3】:
      SELECT p.products_id, pd.products_name, p.products_model
      FROM products_description pd
      JOIN products p ON p.products_id = pd.products_id
      WHERE pd.products_name LIKE CONCAT( '%', p.products_model, '%' )
      LIMIT 0 , 100
      

      首先,您必须通过 (p.products_id = pd.products_id) 和 LIMIT 限制您的请求。看看花了多少时间。之后你可以去和(WHERE)进行比较。如果您要直接在 JOIN 中进行比较,如果列表中有 20000 个项目,您将放下您的数据库。小心。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-18
        • 2016-01-05
        • 1970-01-01
        • 2010-11-26
        • 2016-08-12
        • 2011-07-20
        • 2012-06-20
        • 2013-05-27
        相关资源
        最近更新 更多