Microsoft SQL Server
subquery
Ricerca…
subquery
Una sottoquery è una query all'interno di un'altra query SQL. Una sottoquery viene anche chiamata query interna o selezione interna e l'istruzione contenente una sottoquery viene chiamata query esterna o selezione esterna.
Nota
- Le sottoquery devono essere racchiuse tra parentesi,
- Un ORDER BY non può essere utilizzato in una sottoquery.
- Il tipo di immagine come BLOB, array, tipi di dati di testo non sono consentiti nelle sottoquery.
Le sottoquery possono essere utilizzate con select, insert, update e delete statement all'interno di where, from, select clausola insieme a IN, operatori di confronto, ecc.
Abbiamo una tabella denominata ITCompanyInNepal su cui eseguiremo le query per mostrare esempi di subquery:
Esempi: Sottocartelle con istruzione Select
In con operatore e clausola where:
SELECT *
FROM ITCompanyInNepal
WHERE Headquarter IN (SELECT Headquarter
FROM ITCompanyInNepal
WHERE Headquarter = 'USA');
con operatore di confronto e dove clausola
SELECT *
FROM ITCompanyInNepal
WHERE NumberOfEmployee < (SELECT AVG(NumberOfEmployee)
FROM ITCompanyInNepal
)
con clausola select
SELECT CompanyName,
CompanyAddress,
Headquarter,
(Select SUM(NumberOfEmployee)
FROM ITCompanyInNepal
Where Headquarter = 'USA') AS TotalEmployeeHiredByUSAInKathmandu
FROM ITCompanyInNepal
WHERE CompanyAddress = 'Kathmandu' AND Headquarter = 'USA'
Sottoquery con istruzione di inserimento
Dobbiamo inserire i dati dalla tabella IndianCompany a ITCompanyInNepal. La tabella per IndianCompany è la seguente:
INSERT INTO ITCompanyInNepal
SELECT *
FROM IndianCompany
Sottoquery con la dichiarazione di aggiornamento
Supponiamo che tutte le società che hanno sede negli Stati Uniti decidano di licenziare 50 dipendenti da tutte le società statunitensi del Nepal a causa di qualche cambiamento nella politica delle società statunitensi.
UPDATE ITCompanyInNepal
SET NumberOfEmployee = NumberOfEmployee - 50
WHERE Headquarter IN (SELECT Headquarter
FROM ITCompanyInNepal
WHERE Headquarter = 'USA')
Sottoquery con istruzione di cancellazione
Supponiamo che tutte le società la cui sede è la Danimarca abbiano deciso di chiudere le loro aziende dal Nepal.
DELETE FROM ITCompanyInNepal
WHERE Headquarter IN (SELECT Headquarter
FROM ITCompanyInNepal
WHERE Headquarter = 'Denmark')