具有Group By的Where子句

时间:2011-09-09 15:36:48

标签: mysql group-by

我有这样的查询:

SELECT TPCombined.Title, 
GROUP_CONCAT(DISTINCT CONCAT(a.LastName, ', ', a.FirstName) SEPARATOR '<br />') as Author 
FROM ((SELECT b.Title FROM BookList b) UNION (SELECT s.Title FROM Studios s)) 
AS TPCombined 
LEFT OUTER JOIN (AuthorLinks al JOIN Authors a ON al.AuthorStem = a.AuthorStem) 
ON TPCombined.BookStem = al.BookStem 
WHERE Author LIKE '%Smith%' GROUP BY BookStem; 

此查询不起作用:

  

'where子句'中的未知列'作者'

这适用于HAVING而不是WHERE。但我真的需要使用Where。你能否确认这是否真的不可能?或者也许我可以以某种方式修复查询以使其与Where一起使用?

2 个答案:

答案 0 :(得分:3)

在行级别应用WHERE子句。您已将聚合函数别名为Author,这意味着其结果将不会在行级别可用 - 仅在查询完成并准备好转到客户端时才可用。您需要使用HAVING过滤器,该过滤器在发送给客户端之前应用。

答案 1 :(得分:0)

您需要使用前缀TPCombined来限定作者... TPCombined.Author LIKE ...