我的数据库看起来像:
父级:
+----+-------+
| ID | Name |
+----+-------+
| 1 | Stage |
| 2 | Prod |
+----+-------+
children :
+-------+-------+--------+
| Name | Value | Parent |
+-------+-------+--------+
| Bob | 10 | 1 |
| Smith | 5 | 1 |
| Jack | 3 | 1 |
| Bob | 10 | 2 |
| Smith | 5 | 2 |
| Jack | 3 | 2 |
| Black | 2 | 2 |
+-------+-------+--------+
如何通过使用不同的子名称作为查询的一部分来查询父项?
如果我想获取父 ID 1 以及父 ID 的所有 child ,我如何在查询中使用“Bob”、“Smith”和“Jack”来获取父 ID 1,而不是父 ID 2。
编辑:我不认为这是重复的,因为另一个问题的解决方案将匹配父 ID 1 和 2,因为它们除了 1 之外还有相同的子 ID
最佳答案
您可以使用GROUP_CONCAT
:
SELECT ID, Name
FROM (
SELECT p.ID, p.Name, GROUP_CONCAT(c.Name ORDER BY c.Name) AS children
FROM Parent AS p
INNER JOIN Children AS c ON p.ID = c.Parent
GROUP BY p.ID, p.Name) AS t
WHERE t.children = 'Bob,Jack,Smith'
这将返回具有这些 ('Bob,Jack,Smith')
child 的所有 parent 。
关于MySQL 获取父级和所有子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33876935/