显示按特定列分隔的所有列



mysql有4列,例如:

表名是'categories'

______________________________
|id | name | lastname    | slug |
_______________________________|
|1  | Adam | Walkers     | Test1|
|2  | Nick | Myerson     | Test2|
|3  | John | Nicolas     | Test1|
|_______________________________|

输出应该是:

Test1
Adam Walkers
John Nicolas
Test2
Nick Myerson

我应该这样做吗?SELECT * FROM categories GROUP BY slug和使用foreach?

你就快成功了。

对于一个简单的解决方案,如果你是一个初学者,我建议你在它之前使用一个ORDER BY语句

SELECT slug, name, lastname FROM categories ORDER BY slug

结果

Test1 | Adam | Walkers 
Test1 | John | Nicolas
Test2 | Nick | Myerson

,然后通过代码将其按段塞值与循环分组。

在php中实现的例子

$grouped_types = array();
$example_categories = [["Test1", "Adam", "Walkers"],["Test1", "John", "Nicolas"],["Test2", "Nick", "Myerson"]];

//SET categories grouped
foreach($example_categories as $value){
$grouped_types[$value[0]][] = "{$value[1]} {$value[2]}";
}
//GET categories grouped
foreach(array_keys($grouped_types) as $slug){
echo "<h1>{$slug}</h1>";
foreach($grouped_types[$slug] as $names){
echo "<p>{$names}</p>";
}
}

最终结果

Test1
Adam Walkers
John Nicolas
Test2
Nick Myerson

也可以使用saurabh kackar提到的GROUP_CONCAT语句,如下所示

SELECT slug, GROUP_CONCAT(CONCAT(name, ' ', lastname)) as names
FROM categories
GROUP BY slug;

结果

Test1 | Adam Walkers,John Nicolas |
Test2 | Nick Myerson              |

最后,使用一个explosion函数拆分名称

好工作!

如果您愿意在单个查询中这样做,那么您可以使用GROUP_CONCAT()

最新更新