mysql - 需要将多对一值组合成单个结果的 SQL 查询

标签 mysql sql database one-to-many many-to-one

我有两个名为 Item 和 Property 的数据库表:

Item
--------
item_id
title

Property
--------
property_id
item_id
property_value

每个项目都可以与任意数量的属性条目关联。

是否有一个 SQL/MySql 查询可以返回同一行中的项目数据及其相应的属性数据? (即,我希望查询返回这些表中的所有数据,其格式设置为返回结果的每一行都包含特定项目的所有项目和相关属性数据)

这可能吗?

最佳答案

如果您不介意结果在一列中,您可以执行以下操作:

SELECT i.item_id,
       group_concat(p.property_id, ':', p.property_value separator ';') as properties
FROM Item i INNER JOIN
     Property p
     ON i.item_id = p.item_id
GROUP BY i.item_id;

关于mysql - 需要将多对一值组合成单个结果的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225634/

相关文章:

php - mysql 带有额外条件的连接

sql - Oracle(旧?)加入 - 用于转换的工具/脚本?

php - 向表mysql添加多个值

php - MySQL 计数匹配行数总是返回 1

php - Yii2 - 事件记录中的传递依赖

php - 需要按日期水平显示记录

mysql - 在mysql中合并两个表

php - 我可以使用什么 Sql Join 来组合我的三个表

Mysql:更改日期格式

mysql - 对于具有大量连接的查询,运行 order by 速度较慢