首页 >数据库 >mysql教程 >如何从 MySQL SELECT 语句中排除 NULL 值?

如何从 MySQL SELECT 语句中排除 NULL 值?

Susan Sarandon
Susan Sarandon原创
2025-01-15 16:37:43243浏览

How Can I Exclude NULL Values from MySQL SELECT Statements?

过滤掉 MySQL SELECT 查询中的 NULL

问题:如何使用 MySQL SELECT 语句仅检索非空值?

标准 MySQL SELECT * 语句包括所有列,甚至包含具有 NULL 值的列。 要仅检索非空数据,请使用 IS NOT NULL 条件:

<code class="language-sql">SELECT * 
FROM your_table
WHERE YourColumn IS NOT NULL;</code>

此查询返回 YourColumn 不包含 NULL 的行。 MySQL 还支持空安全相等运算符的否定,尽管这不是标准 SQL:

<code class="language-sql">SELECT *
FROM your_table
WHERE NOT (YourColumn <=> NULL);</code>

处理多个列需要不同的策略。一种方法使用多个 SELECT 语句和 UNION ALL:

<code class="language-sql">SELECT val1 AS val
FROM your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2
FROM your_table
WHERE val2 IS NOT NULL;</code>

这种方法单独检查每一列并组合结果。 然而,由于多次表扫描,它可能效率低下。

为了避免多次扫描,请考虑使用带有交叉连接的 CASE 语句:

<code class="language-sql">SELECT CASE idx
         WHEN 1 THEN val1
         WHEN 2 THEN val2
       END AS val
FROM your_table
CROSS JOIN (SELECT 1 AS idx UNION ALL SELECT 2) t
HAVING val IS NOT NULL;</code>

这将从每行的 val1val2 中选择第一个非空值,并将其分配给 val 列。

以上是如何从 MySQL SELECT 语句中排除 NULL 值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn