我有这样的查询:
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一起使用?
答案 0 :(得分:3)
在行级别应用WHERE子句。您已将聚合函数别名为Author,这意味着其结果将不会在行级别可用 - 仅在查询完成并准备好转到客户端时才可用。您需要使用HAVING过滤器,该过滤器在发送给客户端之前应用。
答案 1 :(得分:0)
您需要使用前缀TPCombined来限定作者... TPCombined.Author LIKE ...