MySQL MariaDB

MySQL-subquery's

MySQL-subquery's
Een subquery is een SQL-query binnen een grotere query die recursief is, of een subquery wordt beschouwd als een interne query. Een buitenste query daarentegen wordt de query genoemd die de subquery bevat. Een MySQL-subquery kan worden ingesloten in de query's, waaronder SELECT, INSERT, UPDATE of DELETE. Bovendien kan binnen een andere subquery een subquery worden genesteld. De subquery van de woordgroep moet tussen haakjes worden gesloten, waar deze ook wordt gebruikt. We leren u hoe en wanneer u MySQL-subquery moet gebruiken om gecompliceerde query's op te stellen en het idee van de bijbehorende subquery te beschrijven. Open de opdrachtregelshell vanaf uw bureaublad en schrijf uw wachtwoord op om het te gaan gebruiken. Druk op Enter en ga verder.

Subquery binnen enkele tabelrecords:

Maak een tabel met de naam 'dieren' in de database 'data'.' Voeg het onderstaande record toe van verschillende dieren met verschillende eigenschappen zoals weergegeven:. Haal dit record als volgt op met de SELECT-query:

>> KIES * UIT gegevens.dieren;

Voorbeeld 01:

Laten we de beperkte records van deze tabel ophalen met behulp van de subquery's. Met behulp van de onderstaande query weten we dat de subquery eerst wordt uitgevoerd en dat de uitvoer ervan in de hoofdquery als invoer wordt gebruikt. Een subquery haalt eenvoudig de leeftijd op waarop de dierprijs 2500 . is. De leeftijd van een dier met een prijs van 2500 is 4 in de tabel. De hoofdquery selecteert alle tabelrecords waarvan de leeftijd groter is dan 4, en de uitvoer wordt hieronder weergegeven:.

>> KIES * UIT gegevens.dieren WAAR Leeftijd > ( SELECTEER Leeftijd UIT gegevens.dieren WAAR Prijs='2500' );

Voorbeeld 02:

Laten we dezelfde tabel in verschillende situaties gebruiken. In dit voorbeeld gebruiken we een functie in plaats van een WHERE-component in de subquery. We hebben het gemiddelde genomen van alle prijzen voor dieren. De gemiddelde prijs is 3189. De hoofdquery selecteert alle records van dieren met een prijs van meer dan 3189. U krijgt de onderstaande uitvoer:.

>> KIES * UIT gegevens.dieren WAAR Prijs > ( SELECT AVG (Prijs) UIT gegevens.dieren);

Voorbeeld 03:

Laten we de IN-component gebruiken in de hoofdquery SELECT. Allereerst haalt de subquery prijzen op die hoger zijn dan 2500. Daarna selecteert de hoofdquery alle records van tabel 'dieren' waar de prijs in het subqueryresultaat ligt.

>> KIES * UIT gegevens.dieren WAAR Prijs IN ( SELECTEER prijs UIT data.dieren WAAR Prijs > 2500 );

Voorbeeld 04:

We hebben de subquery gebruikt om de naam van het dier op te halen waarvan de prijs 7000 . is. Aangezien dat dier een koe is, wordt daarom de naam 'koe' teruggegeven aan de hoofdquery. In de hoofdquery worden alle records opgehaald uit de tabel waar de diernaam 'koe' is.' Omdat we slechts twee records hebben voor 'koe' van dieren, hebben we daarom de onderstaande uitvoer:.

>> KIES * UIT gegevens.dieren WHERE Naam = ( SELECT Name FROM data.dieren WAAR Prijs='7000' );

Subquery binnen meerdere tabelrecords:

Neem de onderstaande twee tabellen, 'student' en 'leraar', in uw database aan. Laten we enkele voorbeelden van subquery's proberen die deze twee tabellen gebruiken.

>> KIES * UIT gegevens.leerling;
>> KIES * UIT gegevens.leraar;

Voorbeeld 01:

We halen gegevens uit één tabel met behulp van de subquery en gebruiken deze als invoer voor de hoofdquery. Dit betekent dat deze twee tabellen op de een of andere manier met elkaar in verband kunnen staan. In het onderstaande voorbeeld hebben we de subquery gebruikt om de naam van de student op te halen uit de tabel 'student' waar de naam van de leraar 'Samina is'.' Deze query retourneert 'Samina' naar de hoofdquerytabel 'leraar'.' De hoofdquery selecteert dan alle records met betrekking tot de leraarnaam 'Samina.' Omdat we twee records voor deze naam hebben, hebben we dit resultaat.

>> KIES * UIT gegevens.leraar WHERE Leernaam = ( SELECTEER Leernaam UIT gegevens.student WHERE TeachName = 'Samina');

Voorbeeld 02:

Probeer dit voorbeeld om de subquery uit te werken in het geval van verschillende tabellen:. We hebben een subquery die de naam van de leraar ophaalt uit de tabelstudent. De naam moet 'i' hebben op elke positie in zijn waarde. Dit betekent dat alle namen in de kolom TeachName met 'i' in hun waarde worden geselecteerd en teruggestuurd naar de hoofdquery. De hoofdquery selecteert alle records uit de 'leraar'-tabel waar de naam van de leraar staat in de uitvoer die door de subquery wordt geretourneerd. Omdat subquery 4 namen van leraren heeft opgeleverd, hebben we een record van al deze namen in de tabel 'leraar.'

>> KIES * UIT gegevens.leraar WAAR TeachName IN (SELECTEER TeachName FROM data.student WAAR TeachName LIKE '%i%');

Voorbeeld 03:

Beschouw de onderstaande twee tabellen, 'order' en 'order1'.

>> KIES * UIT gegevens.bestellen;
>> KIES * UIT gegevens.bestelling1;

Laten we in dit voorbeeld een clausule ANY proberen om subquery's uit te werken. De subquery selecteert de 'id' uit de tabel 'order1', waarbij de kolom 'Status' de waarde 'Unpaid' heeft.' De 'id' kan meer dan 1 zijn. Dit betekent dat er meer dan 1 waarde zou worden geretourneerd naar de hoofdquery om de tabel 'volgorde' resultaten te krijgen. In dit geval kan elke 'id' worden gebruikt. We hebben de onderstaande uitvoer voor deze query:.

>> SELECT Artikel, Verkoop, ID FROM data.order WHERE id= ELKE (SELECT ID FROM data).order1 WHERE Status= 'Onbetaald');

Voorbeeld 04:

Stel dat u de onderstaande gegevens in de tabel 'order1' hebt voordat u een zoekopdracht toepast.

>> KIES * UIT gegevens.bestelling1;

Laten we de query binnen een query toepassen om enkele records uit de tabel 'order1' te verwijderen. Eerst selecteert de subquery de waarde 'Status' uit de tabel 'order' waar het item 'Boek' is.' De subquery retourneert 'Betaald' als de waarde. Nu verwijdert de hoofdquery de rijen uit de tabel 'order1' waar de kolomwaarde 'Status' 'Betaald' is.'

>> VERWIJDEREN UIT gegevens.order1 WHERE Status= ( SELECT Status FROM data.bestel WHERE Item = 'Boek');

Bij controle hebben we nu de onderstaande records in de tabel 'order1' staan ​​na het uitvoeren van de query.

>> KIES * UIT gegevens.bestelling1;

Conclusie:

Je hebt efficiënt gewerkt met veel subquery's in alle bovenstaande voorbeelden. We hopen dat alles nu duidelijk en schoon is.

Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...
Beste opdrachtregelspellen voor Linux
De opdrachtregel is niet alleen je grootste bondgenoot bij het gebruik van Linux, hij kan ook de bron van entertainment zijn omdat je hem kunt gebruik...
Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...