Kasutades lauses ühiseid tabeli avaldisi (common table expression) on võimalik päringu kontekstis koostada tabel, mille põhjal päringut täita.
Näide: Oletame, et ma tahan teada, kas tingimus
Näide: Oletame, et ma tahan teada, kas tingimus
pikkus NOT IN (170, 180)
on loogiliselt samaväärne kui tingimus pikkus <>170 OR pikkus<>180
või tingimus pikkus <>170 AND pikkus<>180
.Saan seda katsetada ilma, et mul oleks andmebaasis baastabelit, kus on veerg pikkus koos sobivate väärtustega.
Näiteks lähen DB-Fiddle keskkonda, valin PostgreSQL ja proovin neid kolme lauset. Kõigis nendes pannakse WITH klauslis VALUES lauset ja konstante kasutades samasuguse struktuuriga ja andmetega tabel, millest põhilausega andmeid otsitakse. WITH klauslis saab ära määrata tabeli avaldisega moodustatud tabeli veergude nimed.
Näiteks lähen DB-Fiddle keskkonda, valin PostgreSQL ja proovin neid kolme lauset. Kõigis nendes pannakse WITH klauslis VALUES lauset ja konstante kasutades samasuguse struktuuriga ja andmetega tabel, millest põhilausega andmeid otsitakse. WITH klauslis saab ära määrata tabeli avaldisega moodustatud tabeli veergude nimed.
WITH pikkused (pikkus) AS (VALUES (150), (160), (170), (180), (190), (200))
SELECT *
FROM pikkused
WHERE pikkus NOT IN (170, 180);
WITH pikkused (pikkus) AS (VALUES (150), (160), (170), (180), (190), (200))
SELECT *
FROM pikkused
WHERE pikkus <>170 OR pikkus<>180;
WITH pikkused (pikkus) AS (VALUES (150), (160), (170), (180), (190), (200))
SELECT *
FROM pikkused
WHERE pikkus <>170 AND pikkus<>180;
Kas postitus oli kasulik? Hinda seda!
Keskmine hinne: 5.0