Вы можете использовать LEFT OUTER JOIN
, чтобы найти записи, которые не соответствуют.
SELECT Id, v.Id AS VehId
FROM Transactions t
LEFT OUTER JOIN Vehicles v ON v.Id = t.VehicleId
WHERE t.VehicleId IS NOT NULL AND v.Id IS NULL
Это сохраняет столбец VehId
, но, поскольку вы знаете, что всегда будет NULL
, тогдаподобный набор данных может быть найден с помощью подзапроса.Это даст вам все те же строки, но пропущенный столбец VehId - вы всегда можете жестко закодировать его, если вам это нужно по какой-то причине.
SELECT Id
FROM Transactions t
WHERE t.VehicleId IS NOT NULL
AND t.VehicleId NOT IN (SELECT Id FROM Vehicles WHERE Id IS NOT NULL)
Это вернет вам все транзакции с неизвестным (но не NULL) VehicleId