有兩張表只有一個欄位不同,兩張表有相同的外鍵,關聯著a表id,b表id
表①:id, name, a_id, b_id
表②:id, value, a_id, b_id
現在我想得到一個結果:按照a_id,b_id分組,查詢表①的name欄位和表②的value欄位的集合,用GROUP_CONCAT拼接
請問怎么用寫才能得到正確的結果
表①表②原本是一張表,為了把name和value欄位拆開,所以拆分成兩張表
uj5u.com熱心網友回復:
join一下就好了啊。uj5u.com熱心網友回復:
如果只是為了將value和name拆開,為啥要兩個外鍵id原表A:id,
表①:id, name, a_id
表②:id, value, a_id
這樣不行么?
uj5u.com熱心網友回復:
表①和表②都是以a_id, b_id來區分的,拆開以前的sql大概是
SELECT
GROUP_CONCAT(t1.name),
GROUP_CONCAT(t1.value)
FROM
t1
INNER JOIN a ON a.id = t1.id
INNER JOIN b ON b.id = t1.id
現在拆開了,兩張表的關系就是他們都能以a_id, b_id來確定關系
uj5u.com熱心網友回復:
這個sql想要的效果是,統計表①的所有name欄位的值,然后拼接到一起,統計表②的value欄位,拼接到一起,使用a_id,b_id分組,是讓表①表②的a_id, b_id達成一種聚合主鍵的效果uj5u.com熱心網友回復:
把樣例資料和期望結果發出來。uj5u.com熱心網友回復:
是不是這樣的
SELECT
group_concat(t_all.`name`, ','),
group_concat(t_all.`value`, ',')
FROM
(
SELECT
tv.`value`,
tn.`name`,
tn.a_id,
tn.b_id
FROM
test_n tn
LEFT JOIN test_v tv ON tn.a_id = tv.a_id
AND tn.b_id = tv.b_id
) t_all
GROUP BY
t_all.a_id
uj5u.com熱心網友回復:
可能會存在重復,需要用DISTINCT去重才行轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53772.html
標籤:Java相關
