2016-07-13 20 views
0

Ich habe zwei Tabellen in MYSQL wo Tabelle 2 Bereiche von IDs enthält und Tabelle1 ID-Werte enthält. Ich möchte Tabelle1 IDs trennen, die nicht in Tabelle2 Bereichen ist. diese Abfrage:MYSQL - nicht zwischen allen Bereichen

select id 
from table1,table2 
where table1.id not between table2.start and table2.end 

wird dazu führen, dass IDs nicht zwischen mindestens einem der Bereiche. Aber ich möchte Ids bekommen, die nicht zwischen allen Bereichen liegen.

eine Idee?

(ich möchte nicht anti-Join verwenden, da es viele Ressourcen benötigt)

Antwort

0

können Sie verwenden not exists:

select t1.* 
from table1 t1 
where not exists (select 1 
        from table2 t2 
        where t1.id between t2.start and t2.end 
       ); 
0

ich weiß nicht, ob ich es richtig verstanden habe, aber wenn Sie möchten, Um die IDs von Tabelle1 zu erhalten, die nicht zwischen dem Bereich von IDs von Tabelle2 liegen, können Sie versuchen:

select id from table1 
       where table1.id not between 
       (select min(table2.id) from table2) and 
        (select max(table2.id) from table2) 
Verwandte Themen