这是我的sql语句:
SELECT
tA.a1, GROUP_CONCAT(tB.b2) AS b2
FROM
tableA tA
LEFT JOIN
tableB tB ON tA.a2 = tB.b1
WHERE
CONCAT(tA.a1, b2) LIKE '%somestring%'
GROUP BY tA.a1;
我收到一条sql错误,上面写着“WHERE中未知列名b2”的内容。
答案 0 :(得分:3)
SELECT
tA.a1, GROUP_CONCAT(tB.b2) AS b2
FROM
tableA tA
LEFT JOIN
tableB tB ON tA.a2 = tB.b1
GROUP BY tA.a1
HAVING
CONCAT(tA.a1, b2) LIKE '%somestring%';
答案 1 :(得分:2)
您无法在WHERE
子句中使用别名 - 但在您的情况下甚至毫无意义,因为WHERE
会对将被分组的行应用过滤器 while GROUP_CONCAT()
收集已分组
例如,您可以使用子查询执行此操作:
SELECT *
FROM
(SELECT
tA.a1 AS ta1, GROUP_CONCAT(tB.b2) AS b2
FROM
tableA tA
LEFT JOIN
tableB tB ON tA.a2 = tB.b1
GROUP BY tA.a1) AS grouped
WHERE
CONCAT(ta1, grouped.b2) LIKE '%somestring%'
答案 2 :(得分:2)
用于过滤汇总功能,请使用HAVING
代替WHERE
select a, group_concat(b) as b_aggregate from
tbl
where concat(a,b) like "%somestring%" -- not aggregate
group by a
having concat(a, group_concat(b)) like "%somestring%" -- aggregate