+----+--------+
| id | name |
+----+--------+
| 2 | robin |
| 3 | jyothi |
| 1 | angel |
+----+--------+
Run Code Online (Sandbox Code Playgroud)
+----+---------+--------+
| id | hobbies | ref_id |
+----+---------+--------+
| 1 | walking | 1 |
| 2 | chating | 1 |
| 3 | reading | 2 |
| 4 | walking | 2 |
+----+---------+--------+
Run Code Online (Sandbox Code Playgroud)
我想要名字和他们的爱好,他们的爱好是"行走"或名字是'知更鸟'
+----+-----------------+
| name | hobbies |
+----+-----------------+
| 1 | walking,chating |
| 3 | reading,surfing |
+----+-----------------+
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我不想使用子查询或将整个结果保存为虚拟表并通过where子句搜索all_hobbies.我想通过where子句或某种方式完成group_concat列,因为它增加了我的SQL_JOIN_SZIE
我不能在这里使用,因为它必须作为或条件,例如:
爱好是'走路'还是名字'知更鸟'
我没有在这台机器上安装mysql,但尝试这个查询,我认为它应该工作.您可以将该HAVING条款视为WHERE您的条款GROUP BY.
select name, group_concat(hobbies) as all_hobbies
from test1,test2
where test1.id = test2.ref_id and test1.name = 'robin'
group by name
having all_hobbies like '%walking%'
Run Code Online (Sandbox Code Playgroud)