Vad menar man med en skalär sql-fråga?
Skalära frågor
4 svar · 235 visningar · startad av K@llen
Jag tror det är att alla värden i SQL-frågan är skalära, alltså att alla är av samma typ
Det tror inte jag, jag tror det har något med subselects att göra?
En skalär sql-fråga är en fråga som returnerar högst en post.
Du kan ange en skalär fråga på alla ställen där du kan ange ett värde.
select (select min(c1) from t1 where c3 = t3.c3)
+ ( select max(c2) from t2 where c4 = t3.c4)
from t3
where 1 = (select count(*) from t5)
--
update t set c = (select min(q) from p where i = t.c)
Det är ganska vanligt att man har en referens till en tabell som finns utanför frågan, detta kallas för en korrelerad fråga.
Skillnaden mot en subselect är att den kan returnera flera poster (med vissa undantag)
select * from t
where c1 in (select c2 from q)
-- blir sant om det finns minst en post i q där
-- c2 är lika med c1
select * from t
where c1 = (select c2 from q)
-- innebär att det blir fel om q innehåller mer
-- än en post där c2 är lika med c1
Det är också en skillnad mellan join och subselect. Det går inte generellt att skriva om en subselect som join, även om det är en okorrelerad subselect.
Tack LarsG för ditt utförliga svar. :)