PostgreSQL, KDE EXISTUJE Dotazu

PostgreSQL: Používat tam, kde EXISTUJE klauzule

Při každém SQL dotazu je použit uvnitř další SQL dotaz, pak to se nazývá poddotaz. Složitý dotaz lze snadno napsat rozdělením velkého dotazu do více poddotazů. Klauzule existuje se používá s poddotazem v příkazu SQL. Výstup EXISTS závisí na počtu záznamů vrácených poddotazem, ale nezávisí na hodnotách záznamů. Výsledek EXISTS bude pravdivý, pokud přidružený poddotaz vrátí alespoň jeden řádek. Jak můžete použít klauzuli existuje a neexistuje v příkazech vybrat, vložit, aktualizovat a odstranit, jsou uvedeny v tomto tutoriálu pomocí různých příkladů.

existuje syntaxe klauzule:

vyberte col1, col2, col3…..
Z table_name1
, KDE EXISTUJE( VYBERTE 1
Z
table_name2
KDE sloupec1 = table_name1.col1);

vytvořte tři tabulky s názvem Společnost, položky a zákazníci a vložte některá data. Spusťte následující dotaz select a zobrazte obsah těchto tabulek.

vybrat * z firmy;
vybrat * z položek;
SELECT * from zákazníci;

Příklad 1: Použití EXISTUJE klauzule SELECT dotazu

(a) EXISTUJE,

následující dotaz načte záznamy z položek tabulky založené na společnosti tabulce. Poddotaz prohledává všechny záznamy z tabulky společnosti, kde company_id tabulky společnosti se rovná company_id tabulky položek a pole Hodnota telefonu není prázdné. V tabulce společnosti je jeden záznam, který nemá telefonní číslo a tento záznam bude z výstupu vynechán.

VYBERTE item_id, název, množství,
položek
, KDE EXISTUJE (VYBERTE 1
OD firmy
KDE položek.company_id = společnost.company_id a společnost.telefon<>“);

výstup:

záznam LG nemá v tabulce společnosti žádný záznam telefonu. Takže to není objevil ve výstupu.

(b) neexistuje

neexistuje klauzule je opakem klauzule existuje. Následující dotaz načte tyto záznamy z tabulky položek, když poddotaz vrátí false.

vyberte item_id, name, quantity
z položek
kde neexistuje (vyberte 1
z firmy
kde položky.company_id = společnost.company_id a společnost.website_url je NULL);

výstup:

neexistuje žádný záznam v tabulce společnosti, kde website_url je NULL. Výstup poddotazu je tedy nepravdivý pro všechny záznamy a jsou načteny všechny záznamy tabulky položek.

příklad-2: Použití klauzule existuje v dotazu vložit

podle následujícího dotazu vložit budou data vložena do tabulky položek, pokud jsou company_id tabulek společnosti i zákazníků stejné.

VLOŽIT DO položky
(company_id)
VYBERTE company_id
OD zákazníků
, KDE EXISTUJE (vyberte 1
OD společnosti,zákazníky
, KDE zákazníci.company_id = společnost.company_id);

výstup:

v tabulce zákazníků jsou tři položky pro company_id s hodnotami 1 a 2. Poddotaz se tedy třikrát vrátí pravdivý a budou vloženy tři záznamy.

spusťte dotaz select a zkontrolujte obsah tabulky položek.

Příklad-3: Použití EXISTUJE klauzule v UPDATE dotazu

následující dotaz bude aktualizovat záznamy položek tabulky, kde company_id je 1 a poddotaz vrátí hodnotu true.

AKTUALIZOVAT položky
NASTAVIT název=’Nokia‘,
KDE company_id=1 a EXISTUJE (VYBERTE 1
položek
, KDE name=’Přiřadit‘);

Výstup:

zde se poddotaz vrátí třikrát true a company_id je 1 pro tři záznamy. Po provedení aktualizačního dotazu budou aktualizovány tři záznamy.

spusťte dotaz select a zkontrolujte obsah tabulky položek.

Příklad-4: Použití EXISTUJE klauzule DELETE query

následující dotaz bude odstranit tyto záznamy položek tabulky, kde company_id je 1 a poddotaz vrátí hodnotu true.

ODSTRANIT Z položky
KDE company_id=1 a EXISTUJE (VYBERTE 1
položek
, KDE name=’Přiřadit‘);

Výstup:

jsou Tam tři záznamy s hodnotou 1 company_id a jeden záznam má název hodnota ‚Přiřazení‘. Podmínka tedy bude platit třikrát a odstraní tři záznamy z tabulky položek.

spusťte dotaz select a zkontrolujte obsah tabulky položek.

Doufám, že máte získat jasnou představu o použití EXISTUJE klauzule v SQL dotaz po přečtení tohoto návodu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.