Не знаю, зачем вам нужен союз:
SELECT a.model, a.price, b.price, c.price, d.price
FROM
a
INNER JOIN b on a.model = b.model
INNER JOIN c on a.model = c.model
INNER JOIN c on a.model = c.model
WHERE
a.price <> b.price OR a.price <> c.price OR a.price <> d.price
Таким образом, вы не только знаете, что цена отличается, но и какая цена отличается; Похоже, вы потеряете эту информацию с вашим подходом (вы не указали, что выбираете что-либо, чтобы определить, какая пара таблиц вошла в объединение)
Объединение будет полезным, если не во всех таблицах есть все пары машин, например a и b могут иметь Ford Mustang, но этот автомобиль отсутствует в C и D - объединение скрывает мустанг из-за отсутствия в C / D, независимо от того, была ли цена другой или одинаковой. Из твоего вопроса у меня не сложилось впечатления, что так было, хотя
В этом отношении, вместо того, чтобы объединять все пары, объединяемые, я бы сначала объединил их, сгруппировал их и искал модели, имеющие МИНУТУ (цену), которая отличается от МАКСА (цены):
SELECT
model,
min(price),
max(price)
FROM
(
SELECT model, price FROM a UNION ALL
SELECT model, price FROM b UNION ALL
SELECT model, price FROM c UNION ALL
SELECT model, price FROM d
)
GROUP BY
model
HAVING min(price) <> max(price)
Вы теряете знание о том, в каких таблицах имеются различия в этом подходе. Этому можно противостоять, но это не может быть требованием