在 MYSQL 中搜索 Concat 结果时出现问题

Problem with Concat results searching in MYSQL

您好,这是我试图获得结果的查询,但我怎样才能在该列中搜索 concat 结果?

SELECT 
     ( SELECT GROUP_CONCAT(tp.login) 
         FROM tp 
        WHERE tp.user_id = user_extra.user_id
     ) as login
     , users.email as email
     , user_extra.fname as name 
  FROM user_extra 
  LEFT 
  JOIN users 
    ON users.id = user_extra.user_id 
 WHERE users.email like "%example@example.com%" 
    OR user_extra.fname like "%test%" 
    OR tp.login like "%461988%"

您不能在同一范围内引用 select 子句中定义的别名(order by 子句分开)。在 MySQL(8.0.14 或更高版本)的最新版本中,您可以为此使用 lateral

SELECT tp.login, u.email as email, ue.fname as name 
FROM user_extra ue
LEFT JOIN users u ON u.id = ue.user_id 
LEFT JOIN LATERAL (
    SELECT GROUP_CONCAT(tp.login) login
    FROM tp 
    WHERE tp.user_id = ue.user_id
) tp ON 1
WHERE 
    u.email like '%example@example.com%'
    OR ue.fname like '%test%'
    OR tp.login like '%461988%'

在早期版本中,您可以JOIN,或者使用子查询:

SELECT *
FROM (
    SELECT 
        (SELECT GROUP_CONCAT(tp.login) login FROM tp WHERE tp.user_id = ue.user_id) login, 
        u.email as email, 
        ue.fname as name 
    FROM user_extra ue
    LEFT JOIN users u ON u.id = ue.user_id 
) t
WHERE 
    email like '%sradesign.net@gmail.com%'
    OR fname like '%test%'
    OR login like '%461988%'