php mysql while - 当条件相同时循环

标签 php mysql while-loop

我有一个具有这种结构的数据库:

name|color

paul|blue
mary|red
paul|green
joe |yellow
paul|purple
mary|orange
paul|white
etc |etc

我想在这里实现的是列出与名称关联的颜色,如下所示:

paul=blue,green,purple,white
mary=red,orange
joe=yellow

我检查了一些例子并发现了这个:

$query="SELECT * FROM  mytable order by name";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)){
    echo $row['name']. " - ". $row['color'];
    echo "<br />";
}

老实说,我只是不知道如何从这里走向我想要实现的目标。我如何创建一个条件来列出与一个名称关联的所有颜色,然后跳转到下一个等等?

最佳答案

您需要使用 GROUP_CONCAT .尝试这样的事情:

SELECT
  name,
  GROUP_CONCAT(color) AS color
FROM mytable
GROUP BY name

See this fiddle - 已更新

如果您需要考虑重复项,请使用 GROUP_CONCAT(DISTINCT color)。您还可以包含一个自定义的 SEPARATOR,但如果您不使用它,则默认为 ,。所以在你的情况下你不需要指定。此外,如上面链接的文档中所示,如果需要,您可以按照您认为合适的方式对颜色进行排序 - 不过请注意,默认顺序是 ASC,因此您也不需要指定,除非你想改变它。

关于php mysql while - 当条件相同时循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23706951/

相关文章:

mysql - 在 bash 脚本中运行 mysql 命令,无需登录或在每个命令中添加 -u root

javascript - 如何在没有尾调用优化的情况下用函数式编程替代方法替换 while 循环?

php - 自定义优惠券类型 woocommerce WordPress

php - php 中的 exec 工作不当

php - 如何同时在两个文档中从 MySQL 中获取相同的 Random() 数据?

c - 即使使用命令 if(*str == 'stop' ) 并输入 stop,“While”循环也不会停止

java - 如何用 Java 编写五的求和

PHP strtotime 将 false 保存为 MySQL 负整数

mysql - 是否可以指示 libmysqld(嵌入式 MySql 数据库引擎)使用内存数据库?

php - 使用 php 将多行插入 mysql 数据库的最佳方法是什么?