【发布时间】:2008-12-01 01:56:26
【问题描述】:
我有三个多对多格式的表格。即,表 A、B 和 AB 已按您的预期设置。
给定一组 A id,我只需要选择 AB 中与所有 id 匹配的行。
以下内容不起作用:
"SELECT * FROM AB WHERE A_id = 1 AND A_id = 2 AND A_id = 3 AND ..." 因为没有一行会有多个 A_id
在 sql 语句中使用 OR 并没有更好的结果,因为它会产生至少具有一个 A id 的所有结果(而我只想要那些具有所有 id 的行)。
编辑:
对不起,我应该解释一下。我不知道实际的多对多关系是否与实际问题相关。表格概述如下:
Table People
int id
char name
Table Options
int id
char option
Table peoples_options
int id
int people_id
int option_id
所以我有一个人员列表,一个选项列表,以及一个选项和人员表。
所以,给定一个选项 ID 列表,例如 (1, 34, 44, ...),我只需要选择那些拥有所有选项的人。
【问题讨论】:
-
你能改写你的问题,也许添加一个模式的sn-p或什么?因为您似乎说 AB 中的每一行都有一个 A_id,然后您问如何提取与多个 A_id 匹配的 AB 行......这至少可以说是令人困惑。
-
您的问题似乎很荒谬。您的意思是您想要在给定的一组 A_ID 中具有对应 A 记录的所有 B 记录?
标签: sql mysql many-to-many