Wilcard从INNER JOIN搜索LIKE%e.name%

时间:2014-05-07 19:41:35

标签: mysql sql

我正在尝试对加入项目中的值进行通配符搜索。即

 SELECT
    (
        SELECT
            count(*)
        FROM
            user_contacts e
        WHERE
            ece.user = 1 AND 
            (
                e.name LIKE '%u.lastname%'
                OR
                e.name LIKE '%u.firstname%'
            )
    ) as friends_count,

    u.user_id,
    u.firstname,
    u.lastname
  FROM
    users u

但它不起作用。我可以改为:

e.name LIKE u.lastname

这样可行,但不包括我需要的通配符%%。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

你可以连接它。

e.name LIKE CONCAT('%', u.lastname, '%')

答案 1 :(得分:3)

您只需要使用正确的语法进行MySQL的连接:

 SELECT (SELECT count(*)
         FROM  user_contacts e
         WHERE e.user = 1 AND 
               (e.name LIKE concat('%', u.lastname, '%') or
                e.name LIKE concat('%', u.firstname, '%') 
               )
         ) as friends_count,
       u.user_id, u.firstname, u.lastname
 FROM users u;

答案 2 :(得分:0)

e.name LIKE '%' || u.lastname || '%'

请注意,mysql要求您启用标准concat运算符。见PIPES_AS_CONCAT