iT邦幫忙

1

SQL SELECT MAX(X) 沒有資料還是會回傳一筆NULL

  • 分享至 

  • xImage
SELECT MAX(X) AS MaxX
FROM tbl
WHERE XID = 1

假設 XID = 1 這筆資料並不存在
但查詢解果會是有一筆資料
使用PDO rowCount() 判斷查詢解果筆數會判斷錯誤(會是1筆而不是0)

想請問當使用MAX但沒有資料時,讓結果是0嗎?

如果SELECT不到記錄會出現程式錯的話,建議你在你的SELECT之前加一個IF EXISTS來判斷你的WHERE是否有內容存在,如果有再往下跑
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

5
純真的人
iT邦大師 1 級 ‧ 2021-12-22 10:26:31

參考~
http://sqlfiddle.com/#!9/50721b/3

SELECT ifnull(MAX(X),0) AS MaxX
FROM tbl
WHERE XID = 1
6

看起來你對於資料操作有其很大的問題。

當使用 max、min、sum....等統計式的函式。
其筆數已不是原本的資料筆數數量了。
會依照對應的group條件出現各自的筆數。

你的SQL中並沒有使用到group。也就是代表全部處理。
所以無論如何,都至少會有「一筆統計」記錄。

而當無任何資料可供統計的情況下。預設會視為NULL處理。
(記得好像可以調整讓統計函數不會出現NULL而是出現0的參數,不過忘了)

你就利用一下 純真的人 教你的 isNull 。將NULL也視為0就可以了。

哈~mssql才是isnull
mysql是ifnull

其實是當成PHP用了@@"

我要發表回答

立即登入回答