Last chance! 50% off DataCamp Premium
Sale ends in
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.
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 columns
SELECT 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');
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.
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 retrieve
SELECT column_name(s)
-- Specify the table from which to retrieve the data
FROM table_name
-- Filter the results to include only those rows where the column's value matches any value in the specified list
WHERE column_name IN (value1, value2, ...);
Hieronder staat een praktisch voorbeeld van het opnemen van de IN-operator in de WHERE-clausule.
-- Select the employee ID, employee name, and department columns
SELECT 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');
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.
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.
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 table
SELECT employee_id, employee_name, department
FROM employees
-- Filter to include only 'Sales', 'HR', and 'IT' departments
WHERE department IN ('Sales', 'HR', 'IT');
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 table
SELECT employee_id, name
FROM employees
-- Filter employees based on multiple department names using OR conditions
WHERE department = 'Sales'
OR department = 'Marketing'
OR department = 'HR';
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 table
SELECT employee_id, name
FROM employees
-- Filter employees based on a list of department names using the IN operator
WHERE department IN ('Sales', 'Marketing', 'HR');
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 table
SELECT employee_id, name
FROM employees
-- Filter employees based on department_id using a subquery
WHERE department_id IN (
-- Subquery to get department_id for the "Sales" department
SELECT department_id
FROM departments
WHERE department_name = 'Sales'
);
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 met NULL-waarden en kan onvoorspelbare resultaten opleveren. Dit komt doordat NULL-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 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 EXISTS
SELECT employee_id, employee_name
FROM employees e
-- Check if there exists a row in the departments table
WHERE EXISTS (
-- Select 1 is used here as a placeholder; it simply checks for existence
SELECT 1
FROM departments d
-- Match the department_id in employees with department_id in departments
WHERE d.department_id = e.department_id
-- Filter for departments located in New York
AND d.location = 'New York'
);
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 JOIN
SELECT e.employee_id, e.employee_name
FROM employees e
-- Join the employees table with the departments table on department_id
JOIN departments d ON e.department_id = d.department_id
-- Filter the results to include only departments located in New York
WHERE d.location = 'New York';
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 York
WITH 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 CTE
SELECT 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 CTE
WHERE e.department_id IN (SELECT department_id FROM DepartmentList);
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.
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.
De IN-operator filtert verschillende SQL-datatypen, waaronder strings, getallen en datums.
De IN-operator wordt gebruikt in subqueries als een geavanceerde methode om data uit de hoofdquery te filteren.
De EXISTS-operator, de JOIN-clausule en Common Table Expressions (CTE’s) zijn de beste alternatieven voor de IN-operator.
Gangbare databases ondersteunen het gebruik van de IN-operator, waaronder SQL Server, MySQL, PostgreSQL en Oracle.
Leer SQL met DataCamp
Cursus
Cursus
Cursus

blog
Adel Nehme
15 min