获取对值列表具有引用的行,同时不具有对其他值列表的任何引用

时间:2014-07-25 08:20:23

标签: mysql sql

我确信以前曾被问过,但我无法弄清楚如何搜索它

我有一个table table1:

| RefId_1 | RefId_2 |
---------------------
|       1 |     133 |
|       3 |      12 |
|       4 |     144 |
|       4 |      22 |
|       3 |     123 |

我需要获取RefId_1的列表,这些列表确实引用了RefId_2列表,但没有引用另一个RefId_2列表。

例如,我需要RefId_1列表引用RefId_2列表(133,22,44),但是RefId_1不应该引用{{1}列表(12,144,111)。

结果应该只是(1)因为(4)引用了禁止144

提前致谢

3 个答案:

答案 0 :(得分:0)

SELECT DISTINCT RefId_1
FROM yourtablename
WHERE 
  RefId_2 IN (133, 22, 44)
  AND RefId_2 NOT IN (12, 144, 111);

答案 1 :(得分:0)

更新 :( UNTESTED

SELECT DISTINCT REF_ID1 FROM table1 
    WHERE REF_ID2 IN(133,22,44)
    AND
    REF_ID1 NOT IN 
              (SELECT REF_ID1 FROM table1 WHERE REF_ID2 IN (12, 144, 111))

答案 2 :(得分:0)

试试这个必须有你需要的工作

SELECT DISTINCT REF_ID1
FROM table1
WHERE REF_ID1 NOT IN
    (SELECT REF_ID1
     FROM table1
     WHERE REF_ID2 IN (12,144));