我有两个表,Data(Name, dataID)
和 Attributes(Name, attributeID, dataID)
具有一对多关系。一个 dataID
可能与许多 attributeID
相关联。
我想做的是运行一个查询,查找所有具有一组特定 attributeID 的数据 ID。我做不到:
SELECT dataID
FROM Attributes
WHERE dataID = 1 AND (attributeID = 1 OR attributeID = 2 OR attributeID = 3);
这将获取具有这些属性中的任何一个的所有 dataID,我想要具有所有这些属性的 dataID。
建议?
我仍然在使用非常基本的选择之外的更多查询。
最佳答案
由于您需要读取Attributes
表的三个不同行,我建议使用JOIN
来避免子查询。
SELECT a1.dataID
FROM
Attributes a1
JOIN Attributes a2 ON
a1.dataID=a2.dataID
JOIN Attributes a3 ON
a2.dataID=a3.dataID
WHERE
a1.dataID = 1 AND
a1.attributeID = 1 AND
a2.attributeID = 2 AND
a3.attributeID = 3;
关于MySQL 查询查找跨多行的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45225617/