我有两张桌子 区域
| region_id | region_name|
|------------------------|
| 1 | zxc |
| 2 | da |
| 3 | asdas |
和城市
| region_id | city_name | city_id |
|------------------------|---------|
| 1 | zxc | 22 |
| 1 | da | 3 |
| 1 | asdas | 23 |
| 2 | zxc | 22 |
| 2 | da | 3 |
| 1 | asdas | 23 |
| 3 | zxc | 22 |
| 3 | da | 3 |
| 3 | asdas | 23 |
主要栏目是region_id ......其他人现在完全没有
查询是:
SELECT
city.name AS city_name,
region.name AS region_name
FROM city
LEFT JOIN region
ON (city.region_id = region.region_id)
ORDER BY region_name
所以...我得到了smth。像这样:
| region_name | city_name | city_id |
|---------------|------------|---------|
| asd | zxc | 22 |
| asd | da | 3 |
| asd | asdas | 23 |
| asd | zxc | 22 |
| asd | da | 3 |
| zxc | asdas | 23 |
| zxc | zxc | 22 |
| zxc | da | 3 |
现在......你看到很多“asd”和“zxc”......所以可以吗?因为我需要将region_name显示为块的标题,但是城市的名称必须在此块中,例如:
asd:asdas.zxc.da。等等......?
你可以帮我改进这个查询吗? 或者如果它没问题,我怎么才能只获取一次区域名称?谢谢!祝你好运!
答案 0 :(得分:1)
解决方案是按地区分组,然后您可以将城市名称连在一起:
SELECT GROUP_CONCAT(city.name,city.city_id),region.name AS region_name
FROM city
LEFT JOIN region
ON (city.region_id = region.region_id)
GROUP BY region.name;