没有找到记录时,IBM DB2可以返回0(零)吗?

时间:2013-12-21 19:05:05

标签: sql db2

例如: 我有一张学生证和学生成绩表

-----------------------
ID  |  grades
-----------------------
1   |  80
2   |  28
-----------------------

当我查询ID = 3时,我想得到0 我能这样做吗?

喜欢从id为3的学生中选择成绩。 我想得0,因为ID不在表中

2 个答案:

答案 0 :(得分:1)

使用名为count的保留函数运行select命令:

select count(*) from STUDENT.GRADES where ID=3 

应该就是这样。

答案 1 :(得分:1)

也许这会做你想要的:

SELECT ID, MAX(Grades)
  FROM (SELECT ID, Grade FROM Students WHERE ID = 3
        UNION
        VALUES (3, 0) -- Not certain of syntax here
       )
 GROUP BY ID

基本的想法是,表中的学生将有两行,MAX将选择适当的等级(假设没有将等级编码为负值的情况)。没有代表的学生将只有一行的等级为0.重复的3是被寻找的学生的ID。

玩得开心追逐完整的语法。我从DB2 9.7信息中心的Queries开始,但在得到一个好答案之前就没有耐心了 - 而且我没有让DB2进行实验。您可能需要编写SELECT ID, Grades FROM VALUES (3, 0),或者可能还有其他一些神奇的咒语可以完成这项工作。你可以使用SELECT 3 AS ID, 0 AS Grades FROM SYSIBM.SYSTABLES WHERE TABID = 1,但那是一个笨拙的表达。

我保留了列名Grades(复数),即使它看起来像包含一个等级。令人沮丧的是人们常常询问有关匿名表的问题。