De SQL IN-operator gebruiken: een gids voor efficiënt filteren
Met de SQL IN-operator filter je queryresultaten zodat alleen rijen worden opgenomen die aan opgegeven voorwaarden voldoen. Ontdek het volledige potentieel en alternatieven.
De SQL-operator IN is een handig hulpmiddel om data te filteren op basis van een set waarden. Wanneer je lange queries schrijft, helpt de IN-operator om complexe queries te vereenvoudigen en de leesbaarheid te verbeteren.
Als je een beginnende dataprofessional bent, raad ik DataCamp’s cursussen Introduction to SQL en SQL Fundamentals aan om de basis van datafiltering met SQL te leren. Voor een snelle opfrisser kun je ook onze SQL Basics Cheat Sheet bekijken.
Wat is de SQL IN-operator?
De SQL-operator IN is een krachtig hulpmiddel om data in SQL-queries te filteren. Hij verfijnt de queryresultaten door alleen de rijen terug te geven die aan de opgegeven voorwaarden voldoen.
De IN-operator wordt echter na de WHERE-clausule opgenomen om resultaten met meerdere voorwaarden terug te geven. Daarom kun je de IN-operator gebruiken wanneer het gefilterde datatype verschillende waarden kan aannemen.
-- Select the employee ID, employee name, and department columnsSELECT employee_id, employee_name, department
FROM employees
-- Filter the results to include only employees whose department is 'Sales' and 'HR'WHERE department IN('Sales','HR');Mogelijk gemaakt door
In het bovenstaande voorbeeld selecteren we de kolommen employee_id, employee_name en department uit de tabel employees. We geven echter alleen de rijen terug waarbij de medewerkers uit Sales en HR komen.
De IN-operator kan verschillende SQL-datatypen filteren, waaronder strings, getallen en datums. Zorg er bij het filteren van rijen altijd voor dat de referentiekolom het juiste datatype heeft.
Syntax van de SQL IN-operator
De IN-operator heeft een eenvoudige syntax om waarden te filteren. Hij wordt gebruikt in de WHERE-clausule om meerdere waarden uit een kolomlijst te filteren. De algemene syntax voor de IN-operator ziet er als volgt uit.
-- Select the columns you want to retrieveSELECT column_name(s)-- Specify the table from which to retrieve the dataFROM table_name
-- Filter the results to include only those rows where the column's value matches any value in the specified listWHERE column_name IN(value1, value2,...);Mogelijk gemaakt door
Hieronder staat een praktisch voorbeeld van het opnemen van de IN-operator in de WHERE-clausule.
-- Select the employee ID, employee name, and department columnsSELECT employee_id, employee_name, department
FROM employees
-- Filter the results to include only employees whose department is 'Sales' and 'HR'WHERE department IN('Sales','HR');Mogelijk gemaakt door
Belangrijke aandachtspunten
De IN-operator wordt opgenomen in de WHERE-clausule van de SELECT-instructie. Deze plaatsing maakt het mogelijk om rijen op meerdere waarden te filteren. Wanneer je de IN-operator in een SQL-query gebruikt, vereenvoudigt dat complexe queries en maakt het ze beter leesbaar.
De IN-operator is standaard beschikbaar in verschillende databases, waaronder SQL Server, PostgreSQL, MySQL en Oracle. Het is belangrijk om de IN-operator als standaard in hoofdletters te schrijven voor een betere leesbaarheid.
Veelvoorkomende use-cases van de IN-operator
De SQL-operator IN wordt gebruikt voor verschillende data-analysetoepassingen. In deze sectie bekijken we enkele veelvoorkomende use-cases, waaronder data filteren, omgaan met meerdere waarden en het gebruik van subqueries.
Data filteren
De IN-operator filtert records en retourneert een set opgegeven waarden. Zo selecteert de onderstaande query alle kolommen uit de tabel employees en geeft rijen terug met medewerkers uit de afdelingen Sales, HR en IT.
-- Select all columns from employees tableSELECT employee_id, employee_name, department
FROM employees
-- Filter to include only 'Sales', 'HR', and 'IT' departmentsWHERE department IN('Sales','HR','IT');Mogelijk gemaakt door
Omgaan met meerdere waarden
De IN-operator wordt ook gebruikt om records met meerdere waarden te filteren. Dit is handig wanneer je data filtert met meerdere OR-voorwaarden. De IN-operator biedt daarom een eenvoudigere manier om de leesbaarheid van queries te verbeteren.
Hieronder zie je hoe de query eruit zou zien met de OR-operator in plaats van de IN-operator.
-- Main query to select employee_id and name from the employees tableSELECT employee_id, name
FROM employees
-- Filter employees based on multiple department names using OR conditionsWHERE department ='Sales'OR department ='Marketing'OR department ='HR';Mogelijk gemaakt door
Hier is de query met de IN-operator. Let op de eenvoud doordat de herhaalde OR-operator is verwijderd.
-- Main query to select employee_id and name from the employees tableSELECT employee_id, name
FROM employees
-- Filter employees based on a list of department names using the IN operatorWHERE department IN('Sales','Marketing','HR');Mogelijk gemaakt door
Subqueries
Je kunt de IN-operator ook gebruiken om resultaten in een subquery te filteren. Deze aanpak laat je records filteren op basis van een andere query of gerelateerde data. In het onderstaande voorbeeld selecteert de subquery de department_id van de afdeling Sales uit de tabel departments. De hoofdquery retourneert daarom rijen met employee_id en name uit de tabel employees, gefilterd volgens de subquery.
-- Main query to select employee_id and name from the employees tableSELECT employee_id, name
FROM employees
-- Filter employees based on department_id using a subqueryWHERE department_id IN(-- Subquery to get department_id for the "Sales" departmentSELECT department_id
FROM departments
WHERE department_name ='Sales');Mogelijk gemaakt door
Beperkingen en alternatieven
Hoewel de IN-operator eenvoudig te gebruiken is in SQL-queries, zijn er enkele beperkingen in de toepassing, waaronder:
Prestatieproblemen met lange lijsten: Het gebruik van de IN-operator met lange lijsten waarden kan tot prestatieproblemen leiden en de uitvoering van de query vertragen.
Omgaan met NULL-waarden: De IN-operator gaat niet efficiënt om met NULL-waarden en kan onvoorspelbare resultaten opleveren. Dit komt doordat NULL-waarden niet in de waardelijst zijn opgenomen.
Beperkte flexibiliteit: De IN-operator is beperkt bij het werken met grote datasets met meerdere kolommen. Je kunt slechts beperkt kolommen filteren met subqueries.
Alternatieven om de beperkingen van de IN-operator te vermijden zijn onder andere:
De EXISTS-operator gebruiken
De EXISTS-operator controleert of opgegeven records in een subquery aanwezig zijn. Bij correct gebruik is deze operator efficiënt en snel.
-- Select employee ID and name for employees in departments located in New York using EXISTSSELECT employee_id, employee_name
FROM employees e
-- Check if there exists a row in the departments tableWHEREEXISTS(-- Select 1 is used here as a placeholder; it simply checks for existenceSELECT1FROM departments d
-- Match the department_id in employees with department_id in departmentsWHERE d.department_id = e.department_id
-- Filter for departments located in New YorkAND d.location ='New York');Mogelijk gemaakt door
JOIN gebruiken
De SQL-clausule JOIN is efficiënt bij het opvragen van data met complexe filtering en is nuttig wanneer je data filtert over meerdere gerelateerde kolommen. In het onderstaande voorbeeld is de JOIN-clausule gebruikt om de tabellen employees en departments op department_id te koppelen om medewerkers te filteren die in New York werken.
-- Select employee ID and name for employees in departments located in New York using JOINSELECT e.employee_id, e.employee_name
FROM employees e
-- Join the employees table with the departments table on department_idJOIN departments d ON e.department_id = d.department_id
-- Filter the results to include only departments located in New YorkWHERE d.location ='New York';Mogelijk gemaakt door
Common Table Expressions (CTE's) of tijdelijke tabellen gebruiken
Als je te maken hebt met tabellen met lange lijsten, overweeg dan CTE’s te gebruiken om de lijst met waarden op te slaan voordat je de query uitvoert. Deze methode verbetert de prestaties en de leesbaarheid van je query.
-- Define a CTE (Common Table Expression) to store the list of department IDs located in New YorkWITH DepartmentList AS(SELECT department_id
FROM departments
WHERE location ='New York')-- Select employee ID and name for employees who belong to the departments listed in the CTESELECT e.employee_id, e.employee_name
FROM employees e
-- Filter the results to include only employees whose department_id is in the list of department IDs from the CTEWHERE e.department_id IN(SELECT department_id FROM DepartmentList);Mogelijk gemaakt door
Wil je andere geavanceerde technieken voor datafiltering leren, dan raad ik DataCamp’s carrièreroute Associate Data Analyst in SQL aan. Je kunt ook de cursus Intermediate SQL Server bekijken, met een hoofdstuk over common table expressions en andere geavanceerde onderwerpen.
Conclusie
Inzicht in de SQL-operator IN is belangrijk voor een dataprofessional, omdat je er data mee kunt filteren en transformeren tijdens de analyse. Om je SQL-vaardigheden met de IN-operator te verbeteren, raad ik je aan om met verschillende datasets te oefenen.
Wil je je SQL-kennis naar een gemiddeld niveau tillen, bekijk dan de cursus Reporting in SQL om andere complexe queryingtechnieken te verkennen. Bovendien helpt de SQL Associate Certification je op te vallen tussen andere data-analisten door je praktische kennis van SQL voor geavanceerde analyses aan te tonen.
Technical writer voor data science met praktische ervaring in data-analyse, business intelligence en data science. Ik schrijf praktische, op de industrie gerichte content over SQL, Python, Power BI, Databricks en data engineering, gebaseerd op analytisch werk in de echte wereld. Mijn schrijfwerk slaat een brug tussen technische diepgang en zakelijke impact, en helpt professionals om data om te zetten in onderbouwde beslissingen.
\n
\n
\n
\n
Veelgestelde vragen
Kan ik de IN-operator gebruiken om verschillende datatypen te filteren?⌄
De IN-operator filtert verschillende SQL-datatypen, waaronder strings, getallen en datums.
Kun je de IN-operator gebruiken in subqueries?⌄
De IN-operator wordt gebruikt in subqueries als een geavanceerde methode om data uit de hoofdquery te filteren.
Wat is het alternatief voor de IN-operator?⌄
De EXISTS-operator, de JOIN-clausule en Common Table Expressions (CTE’s) zijn de beste alternatieven voor de IN-operator.
Welke databases zijn compatibel met de IN-operator?⌄
Gangbare databases ondersteunen het gebruik van de IN-operator, waaronder SQL Server, MySQL, PostgreSQL en Oracle.
De SQL-operator
INis een handig hulpmiddel om data te filteren op basis van een set waarden. Wanneer je lange queries schrijft, helpt deIN-operator om complexe queries te vereenvoudigen en de leesbaarheid te verbeteren.Als je een beginnende dataprofessional bent, raad ik DataCamp’s cursussen Introduction to SQL en SQL Fundamentals aan om de basis van datafiltering met SQL te leren. Voor een snelle opfrisser kun je ook onze SQL Basics Cheat Sheet bekijken.
Wat is de SQL IN-operator?
De SQL-operator
INis een krachtig hulpmiddel om data in SQL-queries te filteren. Hij verfijnt de queryresultaten door alleen de rijen terug te geven die aan de opgegeven voorwaarden voldoen.De
IN-operator wordt echter na deWHERE-clausule opgenomen om resultaten met meerdere voorwaarden terug te geven. Daarom kun je deIN-operator gebruiken wanneer het gefilterde datatype verschillende waarden kan aannemen.In het bovenstaande voorbeeld selecteren we de kolommen
employee_id,employee_nameendepartmentuit de tabelemployees. We geven echter alleen de rijen terug waarbij de medewerkers uitSalesenHRkomen.De
IN-operator kan verschillende SQL-datatypen filteren, waaronder strings, getallen en datums. Zorg er bij het filteren van rijen altijd voor dat de referentiekolom het juiste datatype heeft.Syntax van de SQL IN-operator
De
IN-operator heeft een eenvoudige syntax om waarden te filteren. Hij wordt gebruikt in deWHERE-clausule om meerdere waarden uit een kolomlijst te filteren. De algemene syntax voor deIN-operator ziet er als volgt uit.Hieronder staat een praktisch voorbeeld van het opnemen van de
IN-operator in deWHERE-clausule.Belangrijke aandachtspunten
De
IN-operator wordt opgenomen in deWHERE-clausule van deSELECT-instructie. Deze plaatsing maakt het mogelijk om rijen op meerdere waarden te filteren. Wanneer je deIN-operator in een SQL-query gebruikt, vereenvoudigt dat complexe queries en maakt het ze beter leesbaar.De
IN-operator is standaard beschikbaar in verschillende databases, waaronder SQL Server, PostgreSQL, MySQL en Oracle. Het is belangrijk om deIN-operator als standaard in hoofdletters te schrijven voor een betere leesbaarheid.Veelvoorkomende use-cases van de IN-operator
De SQL-operator
INwordt gebruikt voor verschillende data-analysetoepassingen. In deze sectie bekijken we enkele veelvoorkomende use-cases, waaronder data filteren, omgaan met meerdere waarden en het gebruik van subqueries.Data filteren
De
IN-operator filtert records en retourneert een set opgegeven waarden. Zo selecteert de onderstaande query alle kolommen uit de tabelemployeesen geeft rijen terug met medewerkers uit de afdelingenSales,HRenIT.Omgaan met meerdere waarden
De
IN-operator wordt ook gebruikt om records met meerdere waarden te filteren. Dit is handig wanneer je data filtert met meerdereOR-voorwaarden. DeIN-operator biedt daarom een eenvoudigere manier om de leesbaarheid van queries te verbeteren.Hieronder zie je hoe de query eruit zou zien met de
OR-operator in plaats van deIN-operator.Hier is de query met de
IN-operator. Let op de eenvoud doordat de herhaaldeOR-operator is verwijderd.Subqueries
Je kunt de
IN-operator ook gebruiken om resultaten in een subquery te filteren. Deze aanpak laat je records filteren op basis van een andere query of gerelateerde data. In het onderstaande voorbeeld selecteert de subquery dedepartment_idvan de afdelingSalesuit de tabeldepartments. De hoofdquery retourneert daarom rijen metemployee_iden name uit de tabelemployees, gefilterd volgens de subquery.Beperkingen en alternatieven
Hoewel de
IN-operator eenvoudig te gebruiken is in SQL-queries, zijn er enkele beperkingen in de toepassing, waaronder:IN-operator met lange lijsten waarden kan tot prestatieproblemen leiden en de uitvoering van de query vertragen.IN-operator gaat niet efficiënt om metNULL-waarden en kan onvoorspelbare resultaten opleveren. Dit komt doordatNULL-waarden niet in de waardelijst zijn opgenomen.IN-operator is beperkt bij het werken met grote datasets met meerdere kolommen. Je kunt slechts beperkt kolommen filteren met subqueries.Alternatieven om de beperkingen van de
IN-operator te vermijden zijn onder andere:De EXISTS-operator gebruiken
De
EXISTS-operator controleert of opgegeven records in een subquery aanwezig zijn. Bij correct gebruik is deze operator efficiënt en snel.JOIN gebruiken
De SQL-clausule
JOINis efficiënt bij het opvragen van data met complexe filtering en is nuttig wanneer je data filtert over meerdere gerelateerde kolommen. In het onderstaande voorbeeld is deJOIN-clausule gebruikt om de tabellen employees en departments opdepartment_idte koppelen om medewerkers te filteren die in New York werken.Common Table Expressions (CTE's) of tijdelijke tabellen gebruiken
Als je te maken hebt met tabellen met lange lijsten, overweeg dan CTE’s te gebruiken om de lijst met waarden op te slaan voordat je de query uitvoert. Deze methode verbetert de prestaties en de leesbaarheid van je query.
Wil je andere geavanceerde technieken voor datafiltering leren, dan raad ik DataCamp’s carrièreroute Associate Data Analyst in SQL aan. Je kunt ook de cursus Intermediate SQL Server bekijken, met een hoofdstuk over common table expressions en andere geavanceerde onderwerpen.
Conclusie
Inzicht in de SQL-operator
INis belangrijk voor een dataprofessional, omdat je er data mee kunt filteren en transformeren tijdens de analyse. Om je SQL-vaardigheden met deIN-operator te verbeteren, raad ik je aan om met verschillende datasets te oefenen.Wil je je SQL-kennis naar een gemiddeld niveau tillen, bekijk dan de cursus Reporting in SQL om andere complexe queryingtechnieken te verkennen. Bovendien helpt de SQL Associate Certification je op te vallen tussen andere data-analisten door je praktische kennis van SQL voor geavanceerde analyses aan te tonen.