我有两个简单的表,一个是关于狗的品种,另一个是狗的名字。
Breeds:
DogId DogBreed
1 boxer
2 Lab
3 Sheppard
Names:
DogId DogName
1 Max
1 duke
2 Jack
2 Socks
3 Lassie 我想要的结果是
boxer - duke, max
Lab- jack, socks
Sheppard- Lassie我已经尝试过内部连接,但是我真的不能理解它,它看起来很简单。任何帮助都将非常受欢迎
发布于 2017-04-29 02:27:26
如果您有大量的记录,内部查询会降低性能(因为执行时间较长)。
优化的SQL查询:
SELECT b.DogBreed,GROUP_CONCAT(n.DogName) FROM Breeds b
LEFT JOIN `Names` n ON n.DogId=b.DogId
GROUP BY n.DogId发布于 2017-04-29 01:37:56
您可以使用GROUP_CONCAT
试一下,
Select
b.dogbreed,
GROUP_CONCAT(
DISTINCT n.dogname
ORDER BY n.dogname ASC SEPARATOR ', '
) dognames
from breeds b
join names n on n.dogid = b.dogid
group by b.dogbreed发布于 2017-04-29 02:18:33
希望这能对你有所帮助
SELECT b.dogbreed , (SELECT GROUP_CONCAT(DogName)
FROM NAMES WHERE DogId = b.DogId ) AS DogNames FROM Breeds bhttps://stackoverflow.com/questions/43685759
复制相似问题