Mysql 未找到记录时返回零

Mysql 未找到记录时返回零,mysql,sql,jsp,servlets,Mysql,Sql,Jsp,Servlets,我正在做一个表格生成器作为学校的一个项目。 在MySQL中,我有3个表,即进程、操作、分数。一切看起来都很好,直到我在web应用程序中测试了我的“添加列”按钮。 以前保存的数据应该正确读取,但也包括格式中的新列,问题是以前查询的数据不包括新表的任何值,因此我打算在未找到记录时返回0分,尝试了IFNULL和COALESCE,但没有任何结果(可能我只是使用错误) 进程-进程ID,进程名称 操作-操作ID,操作名称 分数-分数ID、分数、进程ID、操作ID、分数类型(分数 类型为SELF、GL、FI

我正在做一个表格生成器作为学校的一个项目。 在MySQL中,我有3个表,即进程、操作、分数。一切看起来都很好,直到我在web应用程序中测试了我的“添加列”按钮。 以前保存的数据应该正确读取,但也包括格式中的新列,问题是以前查询的数据不包括新表的任何值,因此我打算在未找到记录时返回0分,尝试了IFNULL和COALESCE,但没有任何结果(可能我只是使用错误)

  • 进程-进程ID,进程名称
  • 操作-操作ID,操作名称
  • 分数-分数ID、分数、进程ID、操作ID、分数类型(分数 类型为SELF、GL、FINAL)

    ps=(PreparedStatement)dbconn.prepareStatement(“从其中processID=?和operationID=?和type=?ORDER BY processID的分数中选择分数”)


下面是一个小样本的图片

IFNULL不起作用的原因是它只对值有影响。没有行的结果集没有值,因此它什么也不做

首先,在客户机上执行此操作可能比在服务器上更好。但是,如果必须在服务器上执行,我可以想出几种方法

试试这个:

SELECT IFNULL(SUM(score), 0) AS score
FROM score
WHERE processID=? and operationID=? and type=?
ORDER BY processid
SUM
确保只返回一行

如果需要在表包含多个匹配行时返回多行,则可以使用此选项(为了简单起见,省略ORDER BY):


回答得很好。。真的很感激。
SELECT score
FROM score
WHERE processID = ? and operationID = ? and type = ?

UNION ALL

SELECT 0
FROM (SELECT 0) T1
WHERE NOT EXISTS
(
    SELECT *
    FROM score
    WHERE processID = ? and operationID = ? and type = ?
)