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中,基于两个过滤器的相应列中包含数据我认为这种逻辑最好在其他地方处理。