【发布时间】:2021-09-28 05:00:44
【问题描述】:
我有两个表 T1 和 T2,从 T1 到 T2 具有一对多的关系。假设我想在 T1 中搜索与 T2 中的查询行完全匹配的行。
例如,
表 T1
| id |
|---|
| x1 |
| x2 |
T2 表
| id | t1_id |
|---|---|
| y1 | x1 |
| y2 | x1 |
| y4 | x2 |
| y5 | x2 |
当我查询 y1 和 y1 时,它不应该返回 x1。同样,如果我查询 y1 和 y4 那么它也不应该返回任何东西。只有当我准确地查询 y1 和 y2 时,它才应该返回 x1。当我查询 y4 和 y5 时,它应该返回 x2。
我所做的是使用GROUP_CONCAT() 通过 T1 的 id 连接 T2
并检查了所有匹配 GROUP_CONCAT 的搜索词。我的查询看起来像
SELECT t1_id
FROM T2
GROUP BY t1_id
HAVING GROUP_CONCAT(id ORDER BY id)='y1y2'
虽然它可以完成工作,但我认为这不是最有效的方法。考虑到这是一个普遍的问题,应该有更好的方法。我在其他线程中找不到合适的搜索词。
【问题讨论】:
标签: mysql one-to-many