Mysql
(初學者)MYSQL:我可以對這個 where 語句做些什麼?
假設我有一些名為 tableA 的表,並且 tableA 中的 column1 有一些空值和字元串。
還假設我創建了一些名為 tempTable 的臨時表,它只有 1 列。並且該 1 列還包含空值和字元串。
我有一個類似於以下的聲明:
select * from tableA where tableA.column1 in (select * from tempTable);
但是,我希望它在 tableA.column1 為空時也選擇內容。in 運算符忽略這種情況。
是否存在考慮 null 的其他運算符?
或者無論如何我可以在真或假條件下在 where 子句中應用某些約束。
例如在下面的錯誤陳述中:
select * from tableA where (if condition1, then tableA.column1 =.... elseif condition2 then tableA.column1 =....);
SELECT tableA.* FROM tableA JOIN ( SELECT DISTINCT column1 FROM tempTable ) temp ON tableA.column1 <=> temp.column1
<=>
是 null 安全的比較運算符。它假定 NULL 等於 NULL,而正常比較運算符=
認為它們不相等。子查詢用於折疊 tempTable 中的相等值 - 如果不是,則可能會多次選擇 tableA 中的每個值。
如果您想要 column1 中的 al NULL,只需添加一個 OR 子句來檢查 ULL
select * from tableA where tableA.column1 in (select column1 from tempTable) OR tableA.column1 IS NULL;