如何编写查询,以便获取每个ID的列中至少有2个非null值的行数?在下面的示例中,将有2行具有2个或更多个非null值。
在以下查询中,“>”附近出现错误的语法错误:
SELECT *
FROM db1
WHERE (var1 IS NOT NULL) + (var2 IS NOT NULL) + (var3 IS NOT NULL) + (var4 IS NOT NULL) >= 2 ;
答案 0 :(得分:1)
您的代码应该适用于MySql,所以我想它不是您使用的数据库。
使用标准SQL可以使用CASE表达式:
SELECT *
FROM db1
WHERE
CASE WHEN (var1 IS NOT NULL) THEN 1 ELSE 0 END +
CASE WHEN (var2 IS NOT NULL) THEN 1 ELSE 0 END +
CASE WHEN (var3 IS NOT NULL) THEN 1 ELSE 0 END +
CASE WHEN (var4 IS NOT NULL) THEN 1 ELSE 0 END >= 2 ;