2013-12-21 121 views
2

例如: 我有學生證和學生成績當找不到記錄時,IBM DB2可以返回0(零)嗎?

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

我想要得到0,當我查詢有關ID = 3 我能做到這一點的桌子嗎?

喜歡從學生的選擇成績,其中id = 3。 我想要得到0,因爲ID不在表

+0

這裏沒有足夠的信息。你運行什麼查詢來獲取學生ID爲1的數據?編輯您的問題以包含該答案。 –

回答

1

運行一個名爲count保留功能的選擇命令:

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

應該就是這樣。

+0

雖然'COUNT(*)'的結果確實是'0',但問題是該語句將不返回任何行。所以,真的,他根本沒有回答,更不用說零。此外,人們假設他需要正常回歸,而不是數量...... –

+0

雖然,確實存在一個假設,但未在說明中提及。 –

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(複數),即使它看起來像它包含一個年級。令人沮喪的是人們多久提問一次關於匿名錶格的問題。

+0

好,好消息是有一個表sysdummy1'只包含一行,它基本上用於'不存在'的行表。 –

相關問題