Ответ 1
Используйте NULL-безопасный равный оператор:
SELECT * FROM A JOIN B ON A.C <=> B.C
Я немного разбираюсь в MySQL, поэтому надеюсь, что найду совет для своей проблемы здесь.
В принципе у меня есть две таблицы, назовите их A и B только для удобства. Обе таблицы имеют нулевой столбец C типа varchar
. Когда я присоединяюсь к A и B с помощью C, я теряю все строки, где C равно NULL в любой таблице. Я знаю, что это нормально в MySQL, но то, что я хотел бы получить, - это объединение, включающее комбинации строк, где C равно NULL в обеих таблицах.
Я узнал, что следующий запрос работает хорошо.
SELECT *
FROM A JOIN B
ON (A.C IS NULL AND B.C IS NULL) OR (A.C IS NOT NULL AND B.C IS NOT NULL AND A.C = B.C)
Итак, мой вопрос в том, является ли этот запрос лучшим, что я могу получить, или есть способ сделать это соединение лучше? Спасибо!
Используйте NULL-безопасный равный оператор:
SELECT * FROM A JOIN B ON A.C <=> B.C