webForumDet fria alternativet
Logga in / Bli medlem

Konstiga nyckelord i SQL

Databaser & SQL

3 svar · 209 visningar · startad av LilleSkutt

Medlem sedan feb. 2001265 inlägg
Frågan#1

Hur använder man följande nyckelord i SQL? Har inte hittat info om dem någonstans.

INTERSECT
MINUS
EXCEPT
NOT EXISTS

Medlem sedan dec. 200012 464 inlägg
#2

Intersect snittet mellan två mängder

select * from A
intersect
select * from B

De som finns i både A och B

Minus Mängd a - mängd b

select * from A
minus
select * from B

De som finns i A men inte i B

Except är som minus (minus är inte sql-standard

Exists

select * from A
where not exists (select * from B)

returnerar alla poster i A om B är tom

Man använder oftast exists i samband med korrelerade frågor.

Medlem sedan feb. 2001265 inlägg
#3

Tack!

Jag förstod allt utom det där med NOT EXISTS... Om jag har tre tabeller, Loaners, Loans och Staff, och jag vill ta fram namnet på de Loaners som har Loanat en bok av samtliga i Staff - och jag ska använda mig av NOT EXISTS, hur går jag till väga? :)

Medlem sedan dec. 200012 464 inlägg
#4

Det låter väldigt mycket som en kursuppgift.

select * from loaners as l 
where not exists 
 (select name from staff
   except
  select loaned_from from loans
   where loaned_by = l.name)
262 ms totalt · 4 externa anrop · v20260731065814-full.05830320
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)