我这里有个列表查询如下,两张表是 1 对多的,实际上字段比较多例子上做了些简化,数据量应该就 10 到 20 万左右 ,要分页和做筛选,
现在有个问题,如果在 where 里写条件会影响 GROUP_CONCAT 的结果 我能想到的就是把 select 或者 where 之一改为子查询, 但是不确认会不会产生性能的问题,想请大佬确认看看有没有更好的方法
SELECT u.id, u.name,#小王 GROUP_CONCAT(i.email) AS email,#[email protected],[email protected] GROUP_CONCAT(i.phone) AS phone #13711112222,13966665555 FROM user u LEFT JOIN contact i ON u.id = i.ref_id GROUP BY u.id; 方式 1 SELECT u.id, u.name, GROUP_CONCAT(i.email) AS email, GROUP_CONCAT(i.phone) AS phone FROM user u LEFT JOIN contact i ON u.id = i.ref_id WHERE u.id IN (SELECT ref_id FROM contact WHERE phone LIKE '%137%') AND u.id IN (SELECT ref_id FROM contact WHERE email LIKE '%abc.com%') GROUP BY u.id; 方式 2 SELECT u.id, u.name, (SELECT GROUP_CONCAT(email) FROM contact WHERE u.id = ref_id) AS email, (SELECT GROUP_CONCAT(phone) FROM contact WHERE u.id = ref_id) AS phone FROM user u LEFT JOIN contact i ON u.id = i.ref_id WHERE i.phone LIKE '%137%' AND i.email LIKE '%qq.com%' GROUP BY u.id; 