2013-06-20 2 views
0

У меня есть две таблицы,таблица и Driver таблица.Простой MySQL-запрос, ON JOINS

В таблице драйверов находятся name, birthDate и id. В Столе для автомобилей находятся regNo, manuID, colour, price и driverID.

driverID и idматч, но есть один Driver.id, который не находится в Car.driverID

Как я буду иметь возможность отображать только один, который не находится в таблице автомобилей.

Я попытался это:

SELECT id FROM Driver JOIN Car ON Car.driverID!=Driver.id; 

ответ

3

Вы можете использовать подзапрос.

SELECT id FROM Driver WHERE id not in (select distinct driverid from car) 
+1

Эффективно использовать «левое соединение», чем это «не в». – rs2012

+2

@ rs2012 Да, это так, и я удивлен ответами, свидетельствующими о том, что их больше не поддержали. – xecaps12

1

Попробуйте

SELECT c.* 
FROM Cars AS C 
LEFT JOIN Drivers AS D ON d.id=c.driverId 
WHERE d.id IS NULL 
+2

Ваши анты дадут мне автомобили, у которых нет водителей ... нет водителей без автомобилей. В любом случае спасибо! – hank99

3

вы можете сделать это

SELECT * FROM `driver` WHERE `id` not in(select `driverId` from `car`) 
1

Если вы хотите использовать соединение, то вы можете сделать:

SELECT d.id 
FROM Driver d 
LEFT JOIN Car c ON (d.id=c.driverID) 
WHERE c.driverID is NULL; 

Вы также можете посмотреть на this answer для других способов сделать это.