ex:表t1有id,name和表t2有id,subname,t1_id(t1的外键)。
# t1 #
### id | name ###
### 1 |vishal ###
### 2 |mote ###
### 3 |ashish ###
### 4 |bhosle ###
# t2 #
### id | subname | t1_id ###
### 1 |merce | 1 ###
### 2 |tech | 1 ###
### 3 |temp |2 ###
### 4 |tech |2 ###
其中,关系是t1:t2 = 1:很多。
查询结果应为。
# t1.id | t1.name | t2_content #
### 1 |vishal |(0=(id=1,subname=merce,t1_id=1),1=(id=2,subname=tech,t1_id=1)) ###
### 2 |mote |(0=(id=3,subname=temp,t1_id=2),1=(id=4,subname=tech,t1_id=2)) ###
任何人都帮我找出选择这种结果的查询。我不想使用任何编程语言来生成这样的结果。只想使用sql查询。
答案 0 :(得分:0)
你似乎基本上想要group_concat()
。我不确定0=
应该是什么,但这应该与此分开:
select t2.t1_id,
group_concat('(', concat('(id=', t2.id, ',subname=', subname, ',t1_id=', t1_id, ','
separator ',') as StrangeFieldConcatenation
from t2
group by t2.t1_id;
答案 1 :(得分:0)
//增加t2_content输出长度
SET SESSION group_concat_max_len = 100000000;
//实际查询
SELECT t1.id,t1.name,GROUP_CONCAT(CONCAT('(id =“',t2.id,'”,subname =“',t2.subname,'”,t1_id =“', t2.t1_id,'“)'))AS t2_content FROM t1 INNER JOIN t2 ON t1.id = t2.t1_id GROUP BY t1.id;