关于GROUP_CONCAT()

wasuka 2007-07-12 11:42:56
结构与数据:

mysql> select * from a;
+----+------+
| ID | b |
+----+------+
| 1 | 1,3 |
+----+------+

mysql> select * from b;
+----+------+
| ID | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
+----+------+

a.b,是b.ID的连接字符串

===========================================================================

SQL:

mysql> SELECT a.*, GROUP_CONCAT(b.name) FROM a, b WHERE b.ID IN (a.b) GROUP BY a.ID;
+----+------+----------------------+
| ID | b | GROUP_CONCAT(b.name) |
+----+------+----------------------+
| 1 | 1,3 | a |
+----+------+----------------------+

mysql> SELECT a.*, GROUP_CONCAT(b.name) FROM a, b WHERE b.ID IN (1,3) GROUP BY a.ID;
+----+------+----------------------+
| ID | b | GROUP_CONCAT(b.name) |
+----+------+----------------------+
| 1 | 1,3 | a,c |
+----+------+----------------------+

=====================================================================

问题:

两条SQL的意图是一样的,只是前者用a.b作为条件,后者用一字符串“1,3”常量,而实际上a.b是等于“1,3”的,但结果却不同。
请问,如何修改第一条SQL以实现第二条SQL的效果?
...全文
241 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2007-07-12
  • 打赏
  • 举报
回复
哦?
我这里只用了0.02哦,这个……
wasuka 2007-07-12
  • 打赏
  • 举报
回复
mysql> SELECT a.*, GROUP_CONCAT(b.name) FROM a, b WHERE find_in_set(b.ID,a.b) GR
OUP BY a.ID;
+----+------+----------------------+
| ID | b | GROUP_CONCAT(b.name) |
+----+------+----------------------+
| 1 | 1,3 | a,c |
+----+------+----------------------+
1 row in set (0.39 sec)

测试通过。不过表内分别只有1、3条数据就用了0.39秒,这效率……
foolbirdflyfirst 2007-07-12
  • 打赏
  • 举报
回复
SELECT a.*, GROUP_CONCAT(b.name) FROM a, b WHERE b.ID IN (1,3) GROUP BY a.ID;
============================================================================
这句与SELECT a.*, GROUP_CONCAT(b.name) FROM a, b WHERE b.ID IN ('1,3') GROUP BY a.ID;
是不同的,b.ID IN ('1,3')相当与b.ID in (a.b),可以用find_in_set解决

SELECT a.*, GROUP_CONCAT(b.name) FROM a, b WHERE find_in_set(b.ID,a.b) GROUP BY a.ID;

:-)

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧