我的数据库结构如下:
表格预订
- 身份证
- responsible_person
- 人数
表格大小
- 身份证
- 尺寸
多对多表RESERVATIONS_HAS_SIZE
- RESERVATION_ID
- SIZE_ID
一个人可以注册,例如3个人。您必须选择这 3 个人的尺码(S、M 或 L)。
我的查询如下所示:
SELECT * FROM RESERVATION
INNER JOIN RESERVATIONS_HAS_SIZE
ON RESERVATION.ID = RESERVATIONS_HAS_SIZE.RESERVATION_ID
INNER JOIN SIZES
ON RESERVATIONS_HAS_SIZE.SIZE_ID = SIZE.ID
问题是现在我取回了 3 条记录。我只想要一条记录,例如一个大小为:S、S、L 的字段。
这可能吗?如果是这样,我该怎么做?
最佳答案
您可以使用GROUP_CONCAT()
:
SELECT GROUP_CONCAT(s.Size SEPARATOR ', ')
FROM RESERVATION r INNER JOIN
RESERVATIONS_HAS_SIZE rhs
ON r.ID = rhs.RESERVATION_ID INNER JOIN
SIZES s
ON rhs.SIZE_ID = s.ID;
关于mysql - 一条记录中的 GROUP 数据(多对多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37208730/