MySQL SELECT 語句:擷取非空資料
本指南示範如何使用 SELECT
語句從 MySQL 資料庫表中有效地僅檢索非空值。 最簡單且最常見的方法是利用 IS NOT NULL
條件。
方法1:使用IS NOT NULL
IS NOT NULL
子句直接過濾掉指定列包含 NULL
值的行。
範例:
<code class="language-sql">SELECT * FROM your_table WHERE your_column IS NOT NULL;</code>
方法 2:使用 NOT 和空安全相等運算子
MySQL 支援使用 NOT
運算子和空安全相等運算子 (<=>
) 的非標準方法。 雖然功能齊全,但通常首選 IS NOT NULL
,因為它具有更好的可讀性和 SQL 標準合規性。
<code class="language-sql">SELECT * FROM your_table WHERE NOT (your_column <=> NULL);</code>
方法 3:對多列進行 UNION ALL
對於具有多個列的表,UNION ALL
語句提供了一種從每列單獨檢索非空值的方法。 此方法的效率低於在單一查詢中對每一列使用 IS NOT NULL
的效率,但它在特定場景中很有用。
<code class="language-sql">SELECT col1 AS value FROM your_table WHERE col1 IS NOT NULL UNION ALL SELECT col2 FROM your_table WHERE col2 IS NOT NULL -- Add more UNION ALL clauses for additional columns</code>
方法 4: CROSS JOIN 和 HAVING 的 CASE 語句
一種更複雜但可能有用的方法涉及使用 CASE
語句、CROSS JOIN
和 HAVING
子句。 此方法通常比更簡單的方法效率較低,但提供了替代解決方案。
<code class="language-sql">SELECT CASE idx WHEN 1 THEN col1 WHEN 2 THEN col2 END AS value FROM your_table CROSS JOIN ( SELECT 1 AS idx UNION ALL SELECT 2 ) t HAVING value IS NOT NULL;</code>
請記得將 your_table
和 your_column
(或 col1
、col2
等)替換為您實際的表格和欄位名稱。 通常建議使用 IS NOT NULL
方法,因為它簡單且有效率。
以上是如何使用 SELECT 語句在 MySQL 中僅擷取非空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!