例如: 我有學生證和學生成績當找不到記錄時,IBM DB2可以返回0(零)嗎?
-----------------------
ID | grades
-----------------------
1 | 80
2 | 28
-----------------------
我想要得到0,當我查詢有關ID = 3 我能做到這一點的桌子嗎?
喜歡從學生的選擇成績,其中id = 3。 我想要得到0,因爲ID不在表
例如: 我有學生證和學生成績當找不到記錄時,IBM DB2可以返回0(零)嗎?
-----------------------
ID | grades
-----------------------
1 | 80
2 | 28
-----------------------
我想要得到0,當我查詢有關ID = 3 我能做到這一點的桌子嗎?
喜歡從學生的選擇成績,其中id = 3。 我想要得到0,因爲ID不在表
運行一個名爲count
保留功能的選擇命令:
select count(*) from STUDENT.GRADES where ID=3
應該就是這樣。
雖然'COUNT(*)'的結果確實是'0',但問題是該語句將不返回任何行。所以,真的,他根本沒有回答,更不用說零。此外,人們假設他需要正常回歸,而不是數量...... –
雖然,確實存在一個假設,但未在說明中提及。 –
也許這會做你想要什麼:
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
(複數),即使它看起來像它包含一個年級。令人沮喪的是人們多久提問一次關於匿名錶格的問題。
好,好消息是有一個表sysdummy1'只包含一行,它基本上用於'不存在'的行表。 –
這裏沒有足夠的信息。你運行什麼查詢來獲取學生ID爲1的數據?編輯您的問題以包含該答案。 –