sql >> Database >  >> RDS >> Sqlserver

Cross Join zonder dubbele combinaties

select A.id aid,B.id bid
from A inner join B on a.id <= b.id
union
select B.id,A.id
from A inner join B on b.id < a.id

Als je geavanceerder wilt zijn:

select distinct
       case when a.id<=b.id then a.id else b.id end id1,
       case when a.id<=b.id then b.id else a.id end id2
from A cross join B

In mijn kleine onwetenschappelijke bak met kleine tafels was de laatste sneller. En hieronder de case uitdrukkingen geschreven als subquery's.

select distinct
       (select MIN(id) from (select a.id union select b.id)[ ]) id1,
       (select MAX(id) from (select a.id union select b.id)[ ]) id2
from A cross join B


  1. PHP PDO bindParam() en MySQL BIT

  2. Laat Oracle OR-verbonden predikaten transformeren in UNION ALL-bewerkingen

  3. Hoe de SQL-query te schrijven om te selecteren en te groeperen op type en aantal per type?

  4. Eenvoudige recursieve boom in PHP / MySQL