webForumDet fria alternativet

Konstiga nyckelord i SQL

3 svar · 207 visningar · startad av LilleSkutt

LilleSkuttMedlem sedan feb. 2001265 inlägg
#1

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

INTERSECT
MINUS
EXCEPT
NOT EXISTS

------------------
---
/* LilleSkutt */

LarsGMedlem 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.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 28 nov 2001]

LilleSkuttMedlem 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? :)

------------------
---
/* LilleSkutt */

LarsGMedlem 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)

------------------
essentitia preter non sans multiplicandum

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)