gpt4 book ai didi

mysql - Sql SELECT 分组依据和顺序

转载 作者:行者123 更新时间:2023-11-29 23:19:17 24 4
gpt4 key购买 nike

我有一个包含 2 列的数据库:CITY 和 REGION。我想填充我的表单选择输入并按区域对它们进行分组。

我正在使用 Bootstrap 3,我想将 optgroup 添加到选择输入,其中包含我拥有的每个区域的区域名称,以及要遵循的所有城市(如果这有意义的话)。

类似这样的事情:

<optgroup label="region 1">
<option>city 1</option>
<option>city 2</option>
<option>city 3</option>
<option>......</option>
</optgroup>
<optgroup label="region 2">
<option>city 1</option>
<option>city 2</option>
<option>city 3</option>
<option>......</option>
</optgroup>
<optgroup label="region 3">
<option>city 1</option>
<option>city 2</option>
<option>city 3</option>
<option>......</option>
</optgroup>

问题是:我应该如何执行sql select 来得到我想要的东西? 并按字母顺序对区域和城市进行排序。

最佳答案

一种方法是使用 group_concat()

select 
region,
group_concat(city order by city) as cities
from table_name
group by region
order by region

上面的查询将为您提供所有地区名称和城市,以逗号分隔

region1 city1,city2,city3
.....

因此,当您循环遍历记录时,您可以获得地区名称,然后将逗号分隔的城市分割为数组,并通过循环数组可以生成选项。

在 PHP 中可以这样做

$conn = new PDO('mysql:host=localhost;dbname=your_db_name', 'user_name', 'password');
$qry = 'select
region,
group_concat(city order by city) as cities
from table_name
group by region
order by region';
$stmt = $conn->prepare($qry);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo '<optgroup label="'.$row['region'].'">';
$cities = explode(",",$row['cities']);
foreach($cities as $city){
echo '<option>'.$city.'</option>';
}
echo '</optgroup>';
}

关于mysql - Sql SELECT 分组依据和顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27468590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com