首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到记录时返回零

问未找到记录时返回零
EN

Stack Overflow用户
提问于 2012-05-12 05:56:13
回答 1查看 7.7K关注 0票数 2

我正在做一个桌子发生器作为一个学校的项目。在MySQL中,我有三个表,即过程、操作、分数。一切看起来都很好,直到我测试了我的“添加列”按钮在网络应用程序。以前保存的数据应该正确读取,但也应该包含新列的格式,问题是以前查询的数据不包括新表的任何值,所以如果没有找到记录,我希望它返回0的分数,尝试IFNULL和整合,但是什么也不会发生(也许我只是使用错误)

processName

  • operation - operationID,operationName

  • score - scoreID,score,processID,operationID,scoreType (得分类型为SELF,GL,FINAL)

ps = (PreparedStatement)dbconn.prepareStatement("SELECT分数从processID=?和operationID=?及type=?ORDER的得分中获得);

下面是一个小样本http://i50.tinypic.com/2yv3rf9.jpg的图片

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-12 06:00:11

IFNULL不能工作的原因是它只对值有影响。没有行的结果集没有值,所以它什么也不做。

首先,在客户机上这样做可能比在服务器上更好。但是,如果您必须在服务器上这样做,我可以想到几种方法。

试试这个:

代码语言:javascript
复制
SELECT IFNULL(SUM(score), 0) AS score
FROM score
WHERE processID=? and operationID=? and type=?
ORDER BY processid

SUM确保准确地返回一行。

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

代码语言:javascript
复制
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 = ?
)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10561440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档