我正在做2列2個表的外部聯接。如果table1.column1 = table2.column1和table1.column2 = table2.column2,則會發生連接。由於列2允許包含空值,因此只要值爲空,聯接就會失敗,因爲null不等於null(只有一位計算機科學家可以喜歡)。如何在兩個表都包含NULL時加入
我想出瞭解決方法是:
select table1.column1,table1.colunn1,table2.column1,table2.column2 from
table1
left join table2
on table1.column1=table2.column1
and if(table1.column2 is null,table2.column2 is null, table1.column2=table2.column2)
這正常工作,但必須有一個更好的辦法?
你不必成爲一名計算機科學家理解爲什麼'NULL = NULL'不能真正導致'TRUE'。只要考慮下面的例子。 *哈姆雷特*的作者是莎士比亞,麥克白*的作者也是莎士比亞。另一方面,Gilgamesh *的Epic的作者是未知的(NULL),所以* Mahabharata *的作者也是如此。現在,我們可以*說*前兩本書,他們的作者是同一個人,但我們不能說那兩部書。 – 2012-07-19 18:42:10
@AndriyM:好點。雖然對於數據庫的使用很明顯,但很多人並沒有真正想到他們的數據 - 因此需要mysql來包含一個無效的比較運算符。我自己的感覺是,應該是默認值,並讓人們明確選擇嚴格的null操作符。 – 2012-07-19 20:07:57