Как выбрать группу строк, которые соответствуют всем элементам в списке в SQL Server?
В этой статье мы увидим, как выбрать группу строк, которые соответствуют всем элементам в списке в SQL Server.
Мы можем выполнить вышеуказанную функцию двумя способами. Это:
- С помощью оператора IN
- ВЫПОЛНЯЯ JOIN с использованием метода STRING_SPLIT
Оператор IN: позволяет указать список значений в предложении WHERE.
STRING_SPLIT() : эту функцию можно использовать для разделения символьного выражения с использованием указанного разделителя, например запятой (',') и т. д.
Для демонстрации выполните следующие шаги:
Шаг 1: Создайте базу данных
Базу данных можно создать с помощью команды CREATE.
Запрос:
CREATE DATABASE geeks;
Шаг 2 : Использование базы данных
Используйте приведенный ниже оператор SQL, чтобы переключить контекст базы данных на гиков:
Запрос:
USE geeks;
Шаг 3: Определение таблицы
У нас есть следующая demo_table в нашей компьютерной базе данных.
Запрос:
CREATE TABLE demo_table( NAME VARCHAR(20), AGE INT, CITY VARCHAR(20) );
Шаг 4: Вставьте данные в таблицу
Запрос:
INSERT INTO demo_table VALUES ("ROMY KUMARI", 22, "NEW DELHI"), ("PUSHKAR JHA",23, "NEW DELHI"), ("RINKLE ARORA",23, "PUNJAB"), ("AKASH GUPTA", 23, "UTTAR PRADESH"), ("AKANKSHA GUPTA",22, "PUNJAB"), ("SUJATA JHA", 30,"PATNA") ("PREETI GIRI", 26,"BANGLORE"), ("PREM GUPTA",31,"PUNE");
Шаг 5: Просмотрите данные таблицы
Запрос:
SELECT * FROM demo_table;
Выход:
Шаг 6: Выберите группу строк, соответствующих элементам в списке.
Для демонстрации предположим, что у нас есть список со следующими элементами: (21, 45, 23, 31). Мы выберем группу строк, значения которых в столбце AGE соответствуют элементам в списке.
Способ 1: Использование оператора IN
Синтаксис:
SELECT *FROM table_name WHERE column_name IN (list);
Запрос:
SELECT * FROM demo_table WHERE AGE IN (21, 45, 23, 31);
Выход:
Способ 2: выполнение JOIN с использованием функции STRING_SPLIT()
Синтаксис:
SELECT * FROM table_name JOIN STRING_SPLIT("list", "separator") ON value = column_name;
Запрос:
SELECT * FROM demo_table JOIN STRING_SPLIT("21, 45, 23, 31", ",") ON value = AGE;
Выход: