Mysql

(初學者)MYSQL:我可以對這個 where 語句做些什麼?

  • November 11, 2020

假設我有一些名為 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;

引用自:https://dba.stackexchange.com/questions/279513