Mysql 如何在SQL中查找包含一个或多个空值的列列表
我是SQL单词的新手,遇到了一个问题,即我有一个包含各种表的IMDb模式。我的问题是如何列出电影表中具有一个或多个空值的所有列Mysql 如何在SQL中查找包含一个或多个空值的列列表,mysql,sql,Mysql,Sql,我是SQL单词的新手,遇到了一个问题,即我有一个包含各种表的IMDb模式。我的问题是如何列出电影表中具有一个或多个空值的所有列 Movie: - ID - Title - Year - Date_published - Duration - Country - Worldwide_gross_income - Languages - Production_company 包含空值的列是语言、国家/地区和生产公司,我的查询将返回此列表。最简单的方法是使用为空和或,如下所示: Select *
Movie:
- ID
- Title
- Year
- Date_published
- Duration
- Country
- Worldwide_gross_income
- Languages
- Production_company
包含空值的列是语言、国家/地区和生产公司,我的查询将返回此列表。最简单的方法是使用
为空和或,如下所示:
Select *
From t
Where Languages is null or country is null
Or Production_company is null;
Select *
From t
Where greatest(Languages, country, Production_company) is null;
或者另一种方法是使用最大值
或最小值
函数,因为它们返回null
,如果任何参数为null
,如下所示:
Select *
From t
Where Languages is null or country is null
Or Production_company is null;
Select *
From t
Where greatest(Languages, country, Production_company) is null;
我不清楚你想要的结果是什么样的。如果您只想知道包含空值的列,可以使用count忽略空值这一事实
drop table if exists t;
create table t(data date,banca varchar(10),locale varchar(10));
insert into t values
('2021-01-01',null,'ne.ma'),('2021-01-01','credem','nevada'),('2021-01-01','crv','black')
;
select case when count(distinct banca) = count(*) then 'n/a' else 'contains nulls' end banca,
case when count(distinct locale) = count(*) then 'n/a' else 'contains nulls' end locale
from t;
+----------------+--------+
| banca | locale |
+----------------+--------+
| contains nulls | n/a |
+----------------+--------+
1 row in set (0.001 sec)
有多个列具有空值,我需要在输出中包含所有这些列。