#sql #tsql
#sql #tsql
Вопрос:
Необходимо получить значения, которых нет в таблице, перечисленные прямо в запросе TSQL
Таблица городов
create table Cities (Id int, City nvarchar (max))
insert into Cities values
(1, 'New York'),
(2, 'Moscow'),
(3, 'Mexico'),
(4, 'Kuala-Lampur')
Теперь мне нужно извлечь города, которые существуют в наборе (‘Лос-Анджелес’, ‘Москва’, ‘Осло’), но не существуют в таблице городов. Итак, мне нужен результат:
- Лос-Анджелес
- Олсо
Я знаю, что самый простой способ — использовать временную таблицу, например
declare @temp table (City nvarchar (max))
insert into @temp values
(Los Angeles),
(Moscow),
(Oslo)
Select City from @temp
where City not in (Select City from Cities)
Но, может быть, есть способ избежать временной таблицы?
Ответ №1:
Вы можете использовать производную таблицу, заполненную VALUES
.
SELECT *
FROM (VALUES ('Los Angeles'),
('Moscow'),
('Oslo')) given_cities (city)
WHERE given_cities.city NOT IN (SELECT cities.city
FROM cities);