sql >> Databasteknik >  >> RDS >> Sqlserver

Cross Join utan dubbletter av kombinationer

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

Om du ville vara mer sofistikerad:

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

I min lilla ovetenskapliga bake off med pyttesmå bord var det senare snabbare. Och nedan, case uttryck skrivna som underfrågor.

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. Hur laddar man en fil i mysql DB på en delad värdplattform?

  2. Regex för att matcha MySQL-kommentarer

  3. Snabbt inlägg om SQLite UPSERT och den nya RETURNING-satsen.

  4. Lär känna funktionerna och funktionerna i MariaDB SkySQL