Mysql 如何选择未参与联接的记录
我需要做一个查询,返回一些连接中不涉及的记录,粘贴相关的表和我编写的查询 表是CAR和SPACE,关系是N个空间中1辆车的一对多;在一个空间里有一辆车 CAR表记录:Mysql 如何选择未参与联接的记录,mysql,sql,database,select,Mysql,Sql,Database,Select,我需要做一个查询,返回一些连接中不涉及的记录,粘贴相关的表和我编写的查询 表是CAR和SPACE,关系是N个空间中1辆车的一对多;在一个空间里有一辆车 CAR表记录: ........................................ car_id | mark | model | prize ........................................ 1 | fiat | 500 | 15000 2 | fi
........................................
car_id | mark | model | prize
........................................
1 | fiat | 500 | 15000
2 | fiat | panda | 8000
3 | opel | astra | 20000
4 | renault | clio | 14000
5 | opel | corsa | 12000
6 | fiat | panda | 8000
7 | fiat | 500 | 15000
8 | renault | capture | 16000
9 | renault | clio | 14000
10 | fiat | 500 | 15000
空间表记录主键由行、列和房间id标识。car_id是car表主键的外键:
..................................................
row | column | room_id | dimension | car_id
..................................................
1 | 1 | 1 | 100 | 1
1 | 2 | 1 | 100 | 1
1 | 3 | 1 | 100 | NULL
2 | 1 | 1 | 100 | 1
2 | 2 | 1 | 100 | 1
2 | 3 | 1 | 100 | NULL
3 | 1 | 1 | 100 | NULL
3 | 2 | 1 | 100 | 6
3 | 3 | 1 | 100 | 6
现在,我想从查询中得到的是选择所有不在任何空间中的汽车。我预计结果如下表所示:
........................................
car_id | mark | model | prize
........................................
2 | fiat | panda | 8000
3 | opel | astra | 20000
4 | renault | clio | 14000
5 | opel | corsa | 12000
7 | fiat | 500 | 15000
8 | renault | capture | 16000
9 | renault | clio | 14000
10 | fiat | 500 | 15000
这是我编写的查询,但它没有返回我期望的结果
SELECT car.* FROM car,space WHERE car.car_id = space.car_id AND space.car_id IS NULL
我最近才开始学习数据库的逻辑,不幸的是我不太好,查询完全错误,但我不知道如何更正它。您可以使用not in检查不在空间表中的车辆中的车辆id。因为在空格表的car_id列中有空值,所以where子句会将它们过滤掉
SELECT car.* FROM car
where car_id not in (select distinct car_id from space where car_id is not null)
或更好的使用不存在
您可以使用not in检查不在空间表中的车辆中的车辆id。因为在空格表的car_id列中有空值,所以where子句会将它们过滤掉
SELECT car.* FROM car
where car_id not in (select distinct car_id from space where car_id is not null)
或更好的使用不存在
您在where子句中使用了相互冲突的术语: 但是space.car\u id不能同时为null和匹配car.car\u id 您正在寻找左联接:
SELECT *
FROM car
LEFT JOIN
space
ON car.car_id = space.car_id
WHERE space.car_id IS NULL
您在where子句中使用了相互冲突的术语: 但是space.car\u id不能同时为null和匹配car.car\u id 您正在寻找左联接:
SELECT *
FROM car
LEFT JOIN
space
ON car.car_id = space.car_id
WHERE space.car_id IS NULL