回答

收藏

MySQL跨多行查询匹配项目

技术问答 技术问答 132 人阅读 | 0 人回复 | 2023-09-13

我有两个表,Data(Name,dataID)并且Attributes(Name,attributeID,dataID)有一对多的关系。dataID可能与许多相关attributeID。6 P- u% h$ R6 Z% N4 Y9 R
我想做的是运行一个具体的查询查询attributeID集合的所有dataID。我不能:0 }+ {: l1 j6 z# s' c3 {* u; V
SELECT dataIDFROM AttributesWHERE dataID = 1 AND (attributeID = 1 OR attributeID = 2 OR attributeID = 3);这些属性中的任何一个都将被用来获得所有dataID,我想拥有所有这些属性dataID。/ S, G7 @6 z1 o$ ]7 n
有什么建议吗?
  i* ?1 B: p5 g8 j& r8 N仍然使用比基本选择更多的查询来解决问题。* d. Z- N8 V# z5 O7 G4 n0 L, U
                                                                " M8 w- I* X, Y4 F8 Z8 M5 g6 k
    解决方案:                                                               
4 u( a- p9 M' q- _' u: p                                                                因为你需要阅读Attributes建议使用表的三个不同行JOIN来避免子查询。8 Y2 U- ?0 [$ ^/ n5 V, @' {
SELECT a1.dataIDFROM    Attributes a1    JOIN Attributes a2 ON        a1.dataID=a2.dataID    JOIN Attributes a3 ON        a2.dataID=a3.dataIDWHERE    a1.dataID = 1 AND    a1.attributeID = 1 AND    a2.attributeID = 2 AND    a3.attributeID = 3;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则