gpt4 book ai didi

mysql 获取列但不包含空列

转载 作者:行者123 更新时间:2023-11-30 01:32:51 25 4
gpt4 key购买 nike

我想选择 tbl1 中的所有列,但不选择 MySQL 存储过程中具有空数据的列。

我的结构如下:

tbl1
Name val1 val2 val3 val4
a 1 2
b 4 4
c 5 7
e 7 6

从tbl1中选择*,其中......

Result:
Name val1 val3
a 1 2
b 4 4
c 5 7
e 7 6

最佳答案

以下是您可以如何做到的。假设 ...具有空数据的列... 是指所有行都具有 NULL 值的列。

DELIMITER $$
CREATE PROCEDURE sp_select()
BEGIN
SET @tbl = 'tbl1', @sql = NULL, @cols = NULL;
SELECT
GROUP_CONCAT(
CONCAT(
'SELECT ''',
`column_name`,
''' name, COUNT(',
`column_name`, ') n FROM ',
@tbl
)
SEPARATOR ' UNION ALL ') INTO @sql
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = @tbl;

SET @sql = CONCAT(
'SELECT GROUP_CONCAT(name) INTO @cols FROM (',
@sql,
') q WHERE q.n > 0'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;

SET @sql = CONCAT('SELECT ', @cols, ' FROM ', @tbl);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;

然后调用该过程

CALL sp_select();

你会得到

+------+------+------+| Name | val1 | val3 |+------+------+------+| a    |    1 |    2 || b    |    4 |    4 || c    |    5 |    7 || e    |    7 |    6 |+------+------+------+

这里是SQLFiddle 演示。

关于mysql 获取列但不包含空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17247443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com