工作台部件
PartCode, PartName, Code1,Code2,Code3,Code4,Code5,Code6 00120,Test,15,null,24,35,12,null
我想在我的报告里
00120,Test,15,24,35,12
只有不为空
lhcgjxsq1#
您应该使用不为空(比较运算符=和<
SELECT * FROM table WHERE YourColumn IS NOT NULL;
为了完整起见,我要提到的是,在mysql中,还可以否定空安全相等运算符,但这不是标准sql。
SELECT * FROM table WHERE NOT (YourColumn <=> NULL);
编辑以反映评论。听起来您的表可能不是第一个正常形式,在这种情况下,更改结构可能会使您的任务更容易。不过还有其他一些方法。。。
SELECT val1 AS val FROM your_table WHERE val1 IS NOT NULL UNION ALL SELECT val2 FROM your_table WHERE val2 IS NOT NULL
/以此类推,对于所有列/上述方法的缺点是,它为每一列多次扫描表一次。下面的代码可能可以避免这种情况,但我还没有在mysql中测试过。
SELECT CASE idx WHEN 1 THEN val1 WHEN 2 THEN val2 END AS val FROM your_table /*CROSS JOIN*/ JOIN (SELECT 1 AS idx UNION ALL SELECT 2) t HAVING val IS NOT NULL
/在mysql中可以引用别名/请点击此处查看全文:https://stackoverflow.com/a/5285461/5837967查询不能排除select中声明的列如果不显示整个列,如何得到“code2”结果?
1条答案
按热度按时间lhcgjxsq1#
您应该使用不为空(比较运算符=和<
为了完整起见,我要提到的是,在mysql中,还可以否定空安全相等运算符,但这不是标准sql。
编辑以反映评论。听起来您的表可能不是第一个正常形式,在这种情况下,更改结构可能会使您的任务更容易。不过还有其他一些方法。。。
/以此类推,对于所有列/上述方法的缺点是,它为每一列多次扫描表一次。下面的代码可能可以避免这种情况,但我还没有在mysql中测试过。
/在mysql中可以引用别名/
请点击此处查看全文:
https://stackoverflow.com/a/5285461/5837967
查询不能排除select中声明的列
如果不显示整个列,如何得到“code2”结果?