mysql - 在mysql View 中防止NULL,反规范化

标签 mysql null view

我很想做这样的事情,但当然要有一个有效的语法:)

MIN(CASE WHEN col=2 
THEN CASE WHEN answer IS NULL THEN 0 ELSE answer END END)

我正在尝试阻止 View 获取 NULL 值并改用零。 这是我创建 View 的 SELECT 查询:

SELECT result,question_id,
MIN(CASE WHEN col=1
THEN answer
END) AS col1,
MIN(CASE WHEN col=2 
THEN answer
END) AS col2,
MIN(CASE WHEN col=3
THEN answer
END) AS col3
FROM answers 
GROUP by result,question_id

基本上我得到了一个不错的结果,看起来像这样

result   question_id   col1   col2   col3
1            2          10     20      70
2            2          80     20     NULL
3            3          0     100       0

我没有任何性能问题,并且原始表会定期更新,这就是为什么我喜欢保留 View 而不是 sp。您看到的表格分散了调查概率的调查的关系结构。每行的 cols 必须加起来为 100。如果有人真的确定某事,例如col3 不会发生他可以在其他表单字段中填写 0 或将该字段留空。表单验证器只检查所有加起来是否为 100。如果该字段留空,则关系表中没有条目,因此分散 View 写入 NULL。

我很想让它写一个“0”,但我不知道怎么做!感谢您提前提出任何建议!

最佳答案

你正在寻找 IFNULL(..something...,0)


显然必须拼写出来:

IFNULL(MIN(CASE WHEN col=3 THEN answer END),0)

关于mysql - 在mysql View 中防止NULL,反规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3265220/

相关文章:

php mysql数据库检索一行三条记录

azure - 处理Azure数据工厂管道中的空值

Swift ui macos @Published nil 或 Int

ios - 在初始运行时打开不同的 View

mysql - 使用 UNION ALL 保存结果

mysql - CakePHP 3 中的数据透视表

php - 如何在每个页面加载 CodeIgniter 助手?

wpf - MvvmCross:在另一个 View 中查看(或等效于CaliburnMicro Conductor)

mysql - 在MYSQL中选择最新输入的记录

java - Autowiring 的 bean 在 setter 之外为空