我有两个表,Data(Name, dataID)并且Attributes(Name, attributeID, dataID)具有一对多关系。一个dataID可能与许多相关联attributeID。
Data(Name, dataID)
Attributes(Name, attributeID, dataID)
dataID
attributeID
我想做的是运行一个查询,该查询查找具有特定的attributeID集合的所有dataID。我不能:
SELECT dataID FROM Attributes WHERE dataID = 1 AND (attributeID = 1 OR attributeID = 2 OR attributeID = 3);
那将使用那些属性中的任何一个来获取所有的dataID,我想要具有所有这些属性的dataID。
有什么建议吗?
仍然使用比基本选择更多的查询来解决问题。
由于您需要读取Attributes表的三个不同行,因此建议使用JOIN来避免子查询。
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;