问一个数据库查询的问题
我现在有两张表,他们靠pid进行连接,比如:
A表
pid x1 x2 x3
1 a1 b1 c1
2 a2 b2 c2
3 a3 b3 c3
4 ……
B表
pid x4
1 d1
1 d2
1 d3
2 e1
2 e2
2 e3
2 e4
2 e5
3 f1
……
我现在想快速取出这样的形式:
1 a1 b1 c1 d1 d2 d3
2 a2 b2 c2 e1 e2 e3 e4 e5
3 a3 b3 c3 f1 ……
我原本是想直接进行连接,但是他对于同一个pid生成的不是一条而是多条数据,其中每条数据A表的部分都是重复的,和我的想法不一样。比如:
1 a1 b1 c1 d1
1 a1 b1 c1 d2
1 a1 b1 c1 d3
2 a2 b2 c2 e1
……
后来我改成了另一种形式,先分别取出两个列表listA和listB,然后用两个嵌套循环,每输出一条listA,就查一遍listB,如果A.pid和B.pid相等时,再进行输出。这种虽然实现了我的想法,但太低效了,实在无法忍受。不知道有没有什么更好的办法?
------解决方案--------------------select pid,x1,x2,x3,
(select GROUP_CONCAT(x4 SEPARATOR ' ') from B表 where pid=A表.pid)
from A表