如何在group_concat列上添加过滤条件?

时间:2011-08-26 12:28:56

标签: mysql

表1

+----+--------+
| id | name   |
+----+--------+
|  2 | robin  |
|  3 | jyothi |
|  1 | angel  |
+----+--------+

表2

+----+---------+--------+
| id | hobbies | ref_id |
+----+---------+--------+
|  1 | walking |      1 |
|  2 | chating |      1 |
|  3 | reading |      2 |
|  4 | walking |      2 |
+----+---------+--------+

我想要名字&他们喜欢“行走”或名字的爱好是'知更鸟'

+----+-----------------+
| name | hobbies       | 
+----+-----------------+
|  1 | walking,chating |      
|  3 | reading,surfing |    
+----+-----------------+

使用了查询:

select name, group_concat(hobbies) as all_hobbies
from test1,test2
where test1.id = test2.ref_id 
and test1.id in (select ref_id
              from test2
              where hobbies = 'walking')
group by name

我不想使用子查询或将整个结果保存为虚拟表&通过where子句搜索all_hobbies。我想通过where子句或某种方式完成group_concat列,因为它增加了我的SQL_JOIN_SZIE

我不能在这里使用,因为它必须作为例如:

的条件

爱好是“走路”或名字是“知更鸟”

3 个答案:

答案 0 :(得分:6)

我没有在这台机器上安装mysql,但尝试这个查询,我认为它应该工作。您可以将HAVING子句视为WHERE的{​​{1}}子句。

GROUP BY

答案 1 :(得分:1)

可以通过以下方式完成:

having all_hobbies like '%walking%' or
name like '%robin%'

having子句将在group concat columns&普通列

答案 2 :(得分:0)

我加入了两张桌子。然后id使用(字段a ||字段b)选择连接,并将我的限制放在Where子句中。