当使用连接从两个表中选择数据时,如何从单行中的 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/