例如: 我有一张学生证和学生成绩表
-----------------------
ID | grades
-----------------------
1 | 80
2 | 28
-----------------------
当我查询ID = 3时,我想得到0 我能这样做吗?
喜欢从id为3的学生中选择成绩。 我想得0,因为ID不在表中
答案 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
(复数),即使它看起来像包含一个等级。令人沮丧的是人们常常询问有关匿名表的问题。