我有两个表,Data(Name, dataID)
和Attributes(Name, attributeID, dataID)
具有一对多关系。一个dataID
可能与许多attributeID
关联。
我想做的是运行一个查询,该查询查找具有特定属性ID集的所有dataID。我不能:
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;