php - 在mysql中使用select join时将数据选择为单行

标签 php mysql sql

当使用连接从两个表中选择数据时,如何从单行中的 mysql 查询中获取数据?

"id"    "itemId"    "itemTempId"    "itemName"                  "userId" "postId"
"1"     "US1"       "T001"          "Samsung Galaxy Note 5"     "1"      "1"

"id"    "itemId"    "itemTempId"    "itemImageName"     "userId" "postId"
"1"     "US1"       "T001"          "front.jpg"         "1"      "1"
"2"     "US1"       "T001"          "side-left.jpg"     "1"      "1"
"3"     "US1"       "T001"          "side-right.jpg"    "1"      "1"
"4"     "US1"       "T001"          "back.jpg"          "1"      "1"

现在,当我像下面那样从第一个表中选择 1 行并从第二个表中选择相关行时,我得到每一行中的所有数据,当我使用 php 打印它时也会重复。

select a.itemName, b.itemImageName from amga a left join amgb b on a.userId = b.userId where a.userId = 1;

当前输出

"itemName"                  "itemImageName"
"Samsung Galaxy Note 5"     "front.jpg"
"Samsung Galaxy Note 5"     "side-left.jpg"
"Samsung Galaxy Note 5"     "side-right.jpg"
"Samsung Galaxy Note 5"     "back.jpg"

理想的输出 或一些不会重复 itemName 并且可以使用 php 轻松输出的其他变体。

"itemName"                  "itemImageName"
"Samsung Galaxy Note 5"     "front.jpg","side-left.jpg","side-right.jpg","back.jpg"

在最终结果中,标题只输出一次,而图像名称需要循环遍历。像这样:

"Samsung Galaxy Note 5"
"front.jpg","side-left.jpg","side-right.jpg","back.jpg"

最佳答案

您需要使用 GROUP_CONCAT 函数进行分组。请尝试这个查询:

select a.itemName, group_concat(b.itemImageName) 
from amga a left join amgb b on a.userId = b.userId 
where a.userId = 1 
group by a.itemName;

关于php - 在mysql中使用select join时将数据选择为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25418561/

相关文章:

php - 使用php函数从表中转换值数据

javascript - 响应ajax方法的innerHtml

Javascript 函数操作

mysql - 无法将 MySQL 与 Sails js 连接

mysql - 简单的sql查询返回零行

php - mysql php jquery 隐藏显示选择

mySQL 如何在使用多个联接时通过特定 id 限制查询

python - 在 MySQL 结果中过滤 NULL 列

MySQL 在子查询中使用别名

php - 通过 PHP 以编程方式备份​​(和通过电子邮件发送)完整的 MySQL 数据库