mysql - 如何在mysql中查找列不为空的次数?

标签 mysql sql database jdbc

我在 mysql 表中有一堆名称以“X_”开头的列(例如:X_N、X_Pad、X_Server 等)。现在,这些列可以为空。

我想找出以 'X_' 开头的列最不为 NULL。

最佳答案

COUNT(expr)

Returns a count of the number of non-NULL values of expr in the rows retrieved by a SELECT statement.

以下查询将返回每列的非空计数:

SELECT
COUNT(*)     AS Total,
COUNT(X_N)   AS NNC_N,
COUNT(X_Pad) AS NNC_Pad
FROM table;

您可以使用此查询从表中获取匹配列的列表:

SELECT COLUMN_NAME
FROM  INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '<database_name>'
AND   TABLE_NAME = '<table_name>'
AND   COLUMN_NAME LIKE 'x\_%';

-- Output:
-- X_N
-- X_Pad
-- X_Server

您可以使用此查询来构建查询:

SELECT CONCAT('SELECT ', GROUP_CONCAT('COUNT(`', COLUMN_NAME, '`) AS `NNC of ', COLUMN_NAME, '`'), ' FROM `', TABLE_NAME, '`')
FROM  INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '<database_name>'
AND   TABLE_NAME = '<table_name>'
AND   COLUMN_NAME LIKE 'x\_%';

-- Output (added whitespace for readability):
-- SELECT
-- COUNT(`X_N`)      AS `NNC of X_N`,
-- COUNT(`X_Pad`)    AS `NNC of X_Pad`,
-- COUNT(`X_Server`) AS `NNC of X_Server`
-- FROM `<table_name>`

备用:

SELECT GROUP_CONCAT('SELECT \'', COLUMN_NAME, '\' AS `Col`, COUNT(`', COLUMN_NAME , '`) AS `NNC` FROM `', TABLE_NAME , '`' SEPARATOR ' UNION ALL ')
FROM  INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '<database_name>'
AND   TABLE_NAME = '<table_name>'
AND   COLUMN_NAME LIKE 'x\_%';

-- Output (added whitespace for readability):
-- SELECT 'X_N'      AS `Col`, COUNT(`X_N`)      AS `NNC` FROM `<table_name>` UNION ALL 
-- SELECT 'X_Pad'    AS `Col`, COUNT(`X_Pad`)    AS `NNC` FROM `<table_name>` UNION ALL 
-- SELECT 'X_Server' AS `Col`, COUNT(`X_Server`) AS `NNC` FROM `<table_name>`

关于mysql - 如何在mysql中查找列不为空的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14475488/

相关文章:

mysql - 带条件的左外连接

sql - 将数据(直接查询模式)从 Databricks SQL 查询引入 Power BI

Mysql 按特定 ID 值排序

jquery - Perl使用Jquery显示html onclick循环数据库插入

sql - 如何在不重新连接的情况下刷新 postgresql 查询?

SQL - 根据数字差异进行分组

php - 加入3张表

sql - 哈萨克符号的​​ LIKE 模式

PHP 。 Mysql - 方法不更新 mysql 行

java - 你如何为 MySQL X DevAPI 使用 Java 连接池?