Articles

MySQL IN

Samenvatting: in deze tutorial leert u hoe u MySQL IN operator kunt gebruiken om te bepalen of een gespecificeerde waarde overeenkomt met een willekeurige waarde in een lijst of een subquery.

Inleiding tot de MySQL IN Operator

Met de IN operator kunt u bepalen of een gespecificeerde waarde overeenkomt met een willekeurige waarde in een reeks waarden of teruggegeven door een subquery.

Het volgende illustreert de syntaxis van de IN operator:

SELECT column1,column2,...FROM table_nameWHERE (expr|column_1) IN ('value1','value2',...);
Code language: SQL (Structured Query Language) (sql)

Laten we de query in meer detail bekijken:

  • Gebruik een column of een expressie ( expr ) met de IN operator in de WHERE clausule.
  • Scheid de waarden in de lijst door komma’s (,).

De IN operator geeft 1 terug als de waarde van de column_1 of het resultaat van de expr expressie gelijk is aan een waarde in de lijst, anders geeft het 0 terug.

Wanneer de waarden in de lijst allemaal constanten zijn, voert MySQL de volgende stappen uit:

  • Eerst worden de waarden geëvalueerd op basis van het type van de column_1 of het resultaat van de expr expressie.
  • Tweede, sorteer de waarden.
  • Derde, zoek naar de waarde met behulp van het binaire zoekalgoritme. Een query die gebruikmaakt van de IN operator met een lijst constanten presteert daarom zeer snel.

Merk op dat als de expr of een willekeurige waarde in de lijst NULL is, de IN operator NULL teruggeeft.

U kunt de IN operator combineren met de NOT operator om te bepalen of een waarde niet overeenkomt met een waarde in een lijst of een subquery. En u kunt de IN operator ook gebruiken in de WHERE clausule van andere statements, zoals UPDATE, en DELETE.

MySQL IN operator voorbeelden

Laten we eens oefenen met enkele voorbeelden van het gebruik van de IN operator. Bekijk de volgende offices tabel uit de voorbeelddatabase:

Offices Table

Als u de kantoren wilt vinden die zich in de V.S. en Frankrijk, kunt u de IN operator gebruiken zoals in de volgende query:

SELECT officeCode, city, phone, countryFROM officesWHERE country IN ('USA' , 'France');
Code language: SQL (Structured Query Language) (sql)

Probeer het uit

MySQL IN landenlijst voorbeeld
U kunt hetzelfde resultaat bereiken met de OR operator als de volgende query:

SELECT officeCode, city, phoneFROM officesWHERE country = 'USA' OR country = 'France';
Code language: SQL (Structured Query Language) (sql)

Probeer het eens

In het geval dat de lijst veel waarden heeft, moet je een heel lang statement construeren met meerdere OR operators. Met de IN operator kunt u de query inkorten en leesbaarder maken.

Om kantoren te krijgen die zich niet in de VS en Frankrijk bevinden, gebruikt u NOT IN in de WHERE-clausule, en wel als volgt:

SELECT officeCode, city, phoneFROM officesWHERE country NOT IN ('USA' , 'France');
Code language: SQL (Structured Query Language) (sql)

Probeer het uit

MySQL NIET IN kantoren voorbeeld

Mysql IN gebruiken met een subquery

De IN operator wordt vaak gebruikt met een subquery. In plaats van een lijst van letterlijke waarden te geven, krijgt de subquery een lijst van waarden uit een of meer tabellen en gebruikt deze als de invoerwaarden van de IN operator.

Laten we eens kijken naar de orders en orderDetails tabellen uit de voorbeelddatabase:

orders orderdetails tabel

Voorbeeld, als u de orders wilt vinden waarvan de totale waarden groter zijn dan 60,000, gebruikt u de operator IN, zoals in de volgende query wordt getoond:

SELECT orderNumber, customerNumber, status, shippedDateFROM ordersWHERE orderNumber IN( SELECT orderNumber FROM orderDetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 60000);
Code language: SQL (Structured Query Language) (sql)

Probeer het eens

MySQL IN met Subquery voorbeeld

De hele query hierboven kan worden opgesplitst in twee afzonderlijke query’s.

Eerst geeft de subquery een lijst met bestelnummers waarvan de waarden groter zijn dan 60,000 met behulp van de GROUP BY en HAVING-clausules:

SELECT orderNumberFROM orderDetailsGROUP BY orderNumberHAVING SUM(quantityOrdered * priceEach) > 60000;
Code language: SQL (Structured Query Language) (sql)

Probeer het uit

MySQL IN subquery

Tweede, de buitenste query gebruikt de IN operator in de WHERE clausule om gegevens uit de orders tabel te halen:

SELECT orderNumber, customerNumber, status, shippedDateFROM ordersWHERE orderNumber IN (10165,10287,10310);
Code language: SQL (Structured Query Language) (sql)

Probeer het uit

In deze tutorial hebt u geleerd hoe u MySQL IN operator kunt gebruiken om te bepalen of een waarde overeenkomt met een willekeurige waarde in een lijst met waarden.

  • Was deze tutorial nuttig?
  • JaNee

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *