MySQL MariaDB

Sottoquery MySQL

Sottoquery MySQL
Una sottoquery è una query SQL all'interno di una query più grande che è ricorsiva oppure una sottoquery è considerata una query interna. Al contrario, una query esterna è definita come la query che include la sottoquery. Una sottoquery MySQL può essere incorporata nelle query, inclusi SELECT, INSERT, UPDATE o DELETE. Inoltre, all'interno di un'altra sottoquery, può essere annidata una sottoquery. La frase subquery deve essere chiusa tra parentesi ovunque venga utilizzata. Ti insegneremo come e quando utilizzare la sottoquery MySQL per comporre query complicate e descrivere l'idea della sottoquery associata. Apri la shell della riga di comando dal desktop e scrivi la password per iniziare a usarla. Premi Invio e continua.

Sottoquery all'interno di record a tabella singola:

Crea una tabella denominata "animali" nel database "dati".' Aggiungi il seguente record di animali diversi con proprietà diverse come visualizzato different. Recupera questo record utilizzando la query SELECT come segue:

>> SELEZIONA * DAI dati.animali;

Esempio 01:

Recuperiamo i record limitati di questa tabella utilizzando le sottoquery. Utilizzando la query seguente, sappiamo che la sottoquery verrà eseguita per prima e il suo output verrà utilizzato nella query principale come input. Una sottoquery sta semplicemente recuperando l'età in cui il prezzo dell'animale è 2500. L'età di un animale il cui prezzo è 2500 è 4 nella tabella. La query principale selezionerà tutti i record della tabella in cui l'età è maggiore di 4 e l'output viene fornito di seguito.

>> SELEZIONA * DAI dati.animali WHERE Età > ( SELECT Age FROM data.animali WHERE Prezzo='2500' );

Esempio 02:

Usiamo la stessa tabella in situazioni diverse. In questo esempio, useremo una funzione invece della clausola WHERE nella sottoquery. Abbiamo preso la media di tutti i prezzi indicati per gli animali. Il prezzo medio sarà 3189. La query principale selezionerà tutti i record di animali con un prezzo superiore a 3189. Otterrai l'output seguente.

>> SELEZIONA * DAI dati.animali DOVE Prezzo > ( SELECT AVG(Prezzo) FROM dati FROM.animali);

Esempio 03:

Usiamo la clausola IN nella query SELECT principale. Prima di tutto, la sottoquery recupererà prezzi maggiori di 2500. Successivamente, la query principale selezionerà tutti i record della tabella "animali" in cui il prezzo si trova nel risultato della sottoquery.

>> SELEZIONA * DAI dati.animali DOVE Prezzo IN ( SELEZIONARE Prezzo DA dati.animali DOVE Prezzo > 2500 );

Esempio 04:

Abbiamo utilizzato la sottoquery per recuperare il nome dell'animale il cui prezzo è 7000. Poiché quell'animale è una mucca, ecco perché il nome "mucca" verrà restituito alla query principale. Nella query principale, tutti i record verranno recuperati dalla tabella in cui il nome dell'animale è "mucca".' Poiché abbiamo solo due record per "mucca" animale, ecco perché abbiamo l'output seguente below.

>> SELEZIONA * DAI dati.animali WHERE Nome = ( SELECT Nome FROM dati.animali DOVE Prezzo='7000' );

Sottoquery all'interno di più record di tabelle:

Assumi le due tabelle seguenti, "studente" e "insegnante", nel tuo database. Proviamo alcuni esempi di sottoquery utilizzando queste due tabelle.

>> SELEZIONA * DAI dati.alunno;
>> SELEZIONA * DAI dati.insegnante;

Esempio 01:

Recupereremo i dati da una tabella utilizzando la sottoquery e la useremo come input per la query principale. Ciò significa che queste due tabelle possono essere correlate in qualche modo. Nell'esempio seguente, abbiamo utilizzato la sottoquery per recuperare il nome dello studente dalla tabella "studente" dove il nome dell'insegnante è "Samina.' Questa query restituirà 'Samina' alla tabella di query principale 'insegnante.' La query principale selezionerà quindi tutti i record relativi al nome dell'insegnante 'Samina.' Poiché abbiamo due record per questo nome, quindi abbiamo questo risultato.

>> SELEZIONA * DAI dati.insegnante WHERE TeachName = ( SELECT TeachName FROM dati.studente WHERE TeachName = 'Samina' );

Esempio 02:

Per elaborare la sottoquery nel caso di tabelle diverse, prova questo esempio. Abbiamo una sottoquery che sta recuperando il nome dell'insegnante dal tavolo student. Il nome dovrebbe avere 'i' in qualsiasi posizione nel suo valore. Ciò significa che tutti i nomi nella colonna TeachName che hanno "i" nel loro valore verranno selezionati e restituiti alla query principale. La query principale selezionerà tutti i record dalla tabella 'insegnante' in cui il nome dell'insegnante è nell'output restituito dalla sottoquery. Poiché la sottoquery ha restituito 4 nomi di insegnanti, ecco perché avremo un record di tutti questi nomi che risiedono nella tabella 'insegnante.'

>> SELEZIONA * DAI dati.insegnante WHERE TeachName IN ( SELECT TeachName FROM dati.studente WHERE TeachName LIKE '%i%' );

Esempio 03:

Considera le due tabelle seguenti, 'order' e 'order1'.

>> SELEZIONA * DAI dati.ordine;
>> SELEZIONA * DAI dati.ordine1;

Proviamo una clausola ANY in questo esempio per elaborare la sottoquery. La sottoquery selezionerà l''id' dalla tabella 'ordine1', dove la colonna 'Stato' ha un valore di 'Non pagato.' L''id' può essere maggiore di 1. Ciò significa che più di 1 valore verrebbe restituito alla query principale per ottenere i risultati dell'"ordine" della tabella. In questo caso, potrebbe essere utilizzato qualsiasi 'id'. Abbiamo l'output seguente per questa query.

>> SELEZIONA Articolo, Vendite, ID DA dati.ordina WHERE id= ANY ( SELECT id FROM data.order1 WHERE Stato= 'Non pagato' );

Esempio 04:

Supponiamo di avere i dati seguenti nella tabella 'order1' prima di applicare qualsiasi query.

>> SELEZIONA * DAI dati.ordine1;

Applichiamo la query all'interno di una query per eliminare alcuni record dalla tabella 'order1'. Innanzitutto, la sottoquery selezionerà il valore "Stato" dalla tabella "ordine" in cui l'articolo è "Libro".' La sottoquery restituisce 'Paid' come valore. Ora la query principale eliminerà le righe dalla tabella "ordine1" in cui il valore della colonna "Stato" è "Pagato".'

>> CANCELLA DAI dati.order1 WHERE Status= ( SELECT Status FROM data.ordina WHERE Articolo = 'Libro' );

Dopo aver verificato, ora abbiamo i seguenti record rimasti nella tabella 'order1' dopo l'esecuzione della query.

>> SELEZIONA * DAI dati.ordine1;

Conclusione:

Hai lavorato in modo efficiente con molte sottoquery in tutti gli esempi precedenti. Speriamo che ora sia tutto chiaro e pulito.

Tutorial Battaglia per Wesnoth
The Battle for Wesnoth è uno dei giochi di strategia open source più popolari a cui puoi giocare in questo momento. Non solo questo gioco è in svilupp...
0 A.D. Tutorial
Tra i tanti giochi di strategia in circolazione, 0 A.D. riesce a distinguersi come un titolo completo e un gioco molto profondo e tattico nonostante s...
Tutorial Unity3D
Introduzione a Unity 3D Unity 3D è un potente motore di sviluppo di giochi. È multipiattaforma cioè ti permette di creare giochi per mobile, web, desk...