37

私は MySQL を少し使いこなせていないので、ここで私の問題に対するアドバイスを見つけられることを願っています。

基本的に 2 つのテーブルがあり、便宜上 A と B と呼びます。両方のテーブルには、タイプ の null 許容列 C がありvarcharます。C を使用して A と B を結合すると、いずれかのテーブルで 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)

だから私の質問は、このクエリは私が得ることができる最高のものですか、それともこの結合をより良くする方法はありますか? ありがとう!

4

1 に答える 1

97

NULL セーフの等号演算子を使用します。

SELECT * FROM A JOIN B ON A.C <=> B.C
于 2013-08-06T20:45:18.107 に答える