考虑这样的桌子 ' N, v% l& B) B) j7 q* a1 Q# PID Value 100 100 100 101 101 101 101 102 2 5 103 104 104 104 104 3 104 104 104 102 1002 102 102 问题是,如果我给出2和5,我应该得到102和105,而102和105都有2和5,或者如果我给出1和3,我应该得到100和104。# f% P9 e# t4 C% g% B6 s( \1 u
我怎么只用一个?sql命令能做到这一点吗?我需要尽可能轻的查询。7 h/ R( f5 ?8 r' }9 b, G5 o
并使用UNION,INTERSECTION或NESTED SQL,哪个更快、更慢、更重? 7 V9 `# V. u& Y8 }& e9 X在此先感谢Ergec8 P5 }; b- T4 f, S
; D# W5 W `2 E解决方案: ) n- ]0 h. ]9 p! H( M
有很多解决方案。除了Jhonny您还可以使用连接解决方案 8 ^( d u4 l/ E( ASELECT DISTINCT t1.idFROM table t1,table t2WHERE t1.id = t2.id AND t1.value = 2 AND t2.value = 5或使用相交+ V7 o; }8 e D* _: W8 Y0 o3 |
SELECT id FROM table WHERE value = 2INTERSECTSELECT id FROM table WHERE value = 5