我正在努力减少每天在表格中插入的行数。
在其中大约 5% 到 10% 的情况下,我得到的只是主键值。 我想知道是否有任何方法可以只选择超过 PK 值的行。
比如我现在得到的结果:
PK1 PK2 cl1 cl2 cl3 cl4
---------------------------------------------------------------------------
a Louis null null 171 15
a Jack 13 null null null
a Marty 17 14 130 null
b Louis 10 11 110 12
b Jack 03 null 185 null
b Marty null null null null
c Louis 16 48 null 25
c Jack null null null null
c Marty 13 null null 64
d Louis null null null null
d Jack 21 12 165 null
d Marty null null null null
我想要的结果:
PK1 PK2 cl1 cl2 cl3 cl4
---------------------------------------------------------------------------
a Louis null null 171 15
a Jack 13 null null null
a Marty 17 14 130 null
b Louis 10 11 110 12
b Jack 03 null 185 null
c Louis 16 48 null 25
c Marty 13 null null 64
d Jack 21 12 165 null
SQL 中是否有任何请求可以更改为该请求?现在我在下面使用这个
SELECT
table.PK1,table.PK2,
table.cl1,table.cl2,table.cl3,table.cl4,
FROM
datatable table
提前致谢
编辑:这是一个例子,有一百多个列(不是 pk),我不想用“where”过滤。 (或者只是在最坏的情况下)
最佳答案
您可以使用 coalesce
功能。它接受任意数量的参数并返回第一个非空参数。例如:
select coalesce(3, 1, 4); --> 3
select coalesce(3, null, 4); --> 3
select coalesce(null, 1, 4); --> 1
select coalesce(null, null, 4); --> 4
select coalesce(null, null, null); --> null
您可以使用它来检查是否所有列都是null
:
where coalesce(col1, col2, ..., colN) is null
关于sql - 某些列中的结果为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49904019/