我想获得在查询的in子句中缺失的值
的人ID | Name | location_id |
1 | Rex| 5 |
2 | Tex| 7 |
3 | Jim| 8 |
4 | John| 11 |
5 | Tom| 12 |
地方location_id | Place |
5 | New York |
6 | London |
7 | Madrid |
8 | Paris |
9 | Dublin |
10 | Chicago |
11 | Berlin |
12 | Colombo |
我想找到没有人的地方,当我在查询的in子句中给出位置列表
我不想找到所有不在people表中的位置,只找到我在in子句
中提供的位置。查询SELECT location_id FROM people WHERE location_id in (5,6,7,8,9);
期望输出
|Location_id|
6|
9|
使用一个JOIN
而不是两个IN
操作(提高性能)。
试试这个:
SELECT pl.location_id
FROM place pl LEFT JOIN
people pp ON pl.location_id=pp.location_id
WHERE pp.location_id IS NULL
AND pl.location_id IN (5,6,7,8,9);
结果:
LOCATION_ID
6
9
参见SQL Fiddle。
编辑:不使用JOIN
:
SELECT location_id
FROM place
WHERE location_id NOT IN
(SELECT location_id FROM people)
AND pl.location_id IN (5,6,7,8,9);
Try Below Query
select place from place
inner join poeple on place.location_id <> people.location_id where AND
place.location_id IN (5,6,7,8,9);
Inner join
用于连接两个或多个表。
select p.location_id FROM people p join Place l on
p.location_id!=l.location_id WHERE p.location_id in (5,6,7,8,9);
select l.location_id from people p left join place l on p.location_id=l。where p. Location_id not in (5,6,7,8,9)
SELECT location_id FROM place WHERE location_id NOT IN (SELECT location_id FROM people) AND location_id IN (5,6,7,8,9);