Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在表中获取列名称列表,这些列的值不为NULL_Mysql_Sql - Fatal编程技术网

Mysql 如何在表中获取列名称列表,这些列的值不为NULL

Mysql 如何在表中获取列名称列表,这些列的值不为NULL,mysql,sql,Mysql,Sql,下面是如何获得表的列名列表 SELECT t.name AS table_name, c.name AS column_name FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE c.name LIKE '%tkrt%' and t.name = 'timerate' 因此,我得到了这样一个列表: table_name colunm_name timerate tkrt01

下面是如何获得表的列名列表

SELECT t.name AS table_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%tkrt%' and t.name = 'timerate'
因此,我得到了这样一个列表:

table_name  colunm_name
timerate    tkrt01
timerate    tkrt02
...
timerate    tkrt50
现在在基于tkinit和tkeffdate的实际表中,我得到了这个

select * from timerate where tkinit = '0005' and tkeffdate = 
(select MAX(tkeffdate) from timerate where tkinit = '0005')

tkinit    tkeffdate                tkrt01   tkrt02  ... tkrt22  ... tkrt50  
0005      2014-01-01 00:00:00.000   440.00  NULL    ... 400.00  ... NULL    
所以返回值中有一些tkrt01,tkrt22的值。。。有些tkrt是空的

我在想,如果我使用第一个查询来重新运行一个colunm名称列表tkrt01…tkrt50,并且如果有某种方法,那么可以使用另一个查询来查看,该查询使用循环中的一个变量来检查每一列是否为null,是否不返回它。 基本上,我想要一个列名称列表,其中包含值,所以我的最终结果是

column_name
tkrt01
tkrt22
因为只有这两列中有值

这不是每个人的情况,因为我有两个项目要过滤,分别是tkinit和tkeffdate


每个id tkint都有不同的maxtkeffdate。我已经研究了XML Path和每个外观的操作,但无法找到从sys.tables join sys.columns中列出colunm名称的最佳方法,其中在特定的表t.name中,基于两个过滤器的相应列中包含数据

我认为这种逻辑最好在其他地方处理。