回答

收藏

MySQL跨多行查询匹配项目

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

我有两个表,Data(Name,dataID)并且Attributes(Name,attributeID,dataID)有一对多的关系。dataID可能与许多相关attributeID。
$ q# Y* w% }8 w7 Q; m7 {我想做的是运行一个具体的查询查询attributeID集合的所有dataID。我不能:: ]8 \3 [9 m: [% l: {
SELECT dataIDFROM AttributesWHERE dataID = 1 AND (attributeID = 1 OR attributeID = 2 OR attributeID = 3);这些属性中的任何一个都将被用来获得所有dataID,我想拥有所有这些属性dataID。
" V0 v" c4 p9 j! ^有什么建议吗?
$ e: X3 Z+ y# w0 A- R9 S2 O/ w仍然使用比基本选择更多的查询来解决问题。1 [( x7 q* u8 \' ?5 |' q+ G8 q
                                                                ' g3 v( @( a2 A  i6 Q
    解决方案:                                                                6 ?) c$ i4 v8 T% g+ E
                                                                因为你需要阅读Attributes建议使用表的三个不同行JOIN来避免子查询。
9 ^( Q+ w" T# F4 t. |6 ^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;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则