Выберите другое значение из двух столбцов из двух таблиц mysql - PullRequest
0 голосов
/ 14 ноября 2018

у меня две таблицы например авто и ремонт. В обеих таблицах у меня есть столбец "licensePlate". В таблице cars у меня есть значения: 0000 0001 0002 0003 В таблице repair у меня есть значения: 0000 0002 0003. Как я могу извлечь только значение 0001, которое находится в таблице cars, но не в repair? Я думаю, что я не использую правильный «оператор» или что-то в этом роде:

select car.licensePlate
from car, repair
where car.licensePlate (something) reparir.licensePlate;

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Использование оператора NOT IN должно решить вашу проблему.Как это будет работать:

ВЫБРАТЬ CAR.LICENSEPLATE ИЗ АВТОМОБИЛЯ, ГДЕ CAR.LICNESEPLATE НЕ ВХОДИТ (ВЫБРАТЬ REPAIR.LICENSEPLATE ОТ РЕМОНТА)

Когда этот запрос будет выполнен, он будет читаться как:SELECT CAR.LICENSEPLATE ИЗ АВТОМОБИЛЯ, ГДЕ CAR.LICNESEPLATE NOT IN (0000,0002,0003)

Это происходит потому, что в любом запросе, состоящем из подзапроса, подзапрос выполняется первым, в данном случае это SELECTREPAIR.LICENSEPLATE FROM REPAIR, и результат подзапроса передается в основной запрос.Который подводит итог вышеупомянутому запросу.

Надеюсь, это поможет.Ура!

0 голосов
/ 14 ноября 2018

Вы должны использовать NOT EXISTS или LEFT JOIN, как в:

select c.licensePlate
from car c
where not exists (select 1 from repair r where c.licensePlate = r.licensePlate;

Вам конкретно следует не использовать NOT IN, потому что он имеет странную семантику (то есть действует странно), если подзапрос возвращает значение NULL для любой строки . Когда это происходит, то внешний запрос не будет возвращать ни одной строки как все.

По этой причине я настоятельно рекомендую NOT EXISTS вместо NOT IN с подзапросами.

0 голосов
/ 14 ноября 2018

Вы можете использовать оператор not in:

SELECT licensePlate
FROM   car
WHERE  licensePlate NOT IN (SELECT licensePlate
                            FROM   repair)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...