在WHERE子句中使用MYSQL GROUP_CONCAT

时间:2010-01-06 15:33:45

标签: sql mysql aggregate

是否可以将GROUP_CONCAT放入MYSQL WHERE子句中?

我有两张桌子(一张用于会员,另一张用于付款信息)。例如

会员表

num, memNumber, fullName, coporateName, surname
001, mem0010, Joe Bloggs, NULL, Bloggs
002, mem0015, NULL, BBC
003, mem0017, John Peters, NULL
004, mem0101, Emma Jane, NULL

付款表

num, memberID, subscriptionYear, amount
001, mem0010, 2008, 30
003, mem0010, 2010, 40
004, mem0015, 2010, 40
005, mem0017, 2009, 35
006, mem0101, 2009, 35
007, mem0017, 2010, 40

我有以下查询从两个表中检索信息(我已将其简化以使其更具可读性)。

SELECT members.num, members.memNumber , members.fullName , members.corporateName ,
       CONCAT(members.corporateName , members.surname) AS searchSurname ,
       GROUP_CONCAT(payment.subscriptionYear) As subscriptionYear ,
       GROUP_CONCAT(payment.amount) AS amount    
FROM members 
LEFT JOIN payment ON members.memNumber = payment.memberID    
WHERE `subscriptionYear` NOT LIKE '%2009%'    
GROUP BY members.num    
ORDER BY `searchSurname` ASC

但它从subscriptionYear列的结果中删除了“2009”。无法看到2009年是否在最终的GROUP_CONCAT中?

1 个答案:

答案 0 :(得分:24)

在分组之前,你想要使用HAVING,这是在分组之后发生的。