[英]SQL Select Max of Columns Where Date is Not Null
我當前正在使用此查詢來選擇一些數據: SELECT DISTINCT a.code AS code, name, max(scen.Is3D) AS Is3D FROM locations LEFT JOIN ...
該scen
表中的列Is3D
和Date
。 我只想選擇日期IS NOT NULL
的項目的最大值。 我嘗試了max(scen.Is3D WHERE scen.Date IS NOT NULL)
,但這沒有用。 我無法在查詢中的FROM
之后更改任何內容,因此,如果可能的話,我需要在MAX中進行過濾。 我正在使用MySQL 5.7。
您可以使用:
MAX(CASE WHEN scen.date IS NOT NULL THEN scen.Is3D END) AS Is3D
WHEN
不滿足任何WHEN
條件時, CASE
表達式將返回NULL
,但是MAX()
忽略空值,因此這將僅返回所選行中Is3D
列的最大值。
因此,如果在FROM
之后不能更改任何內容,則無法在此處獲得理想的解決方案。 由於您正在SELECT
NULL
值。 如果我們只能修改最終輸出,我們可以嘗試的一件事就是這樣做。
SELECT MAX(ISNULL(scen.Date,0))...
這會將所有NULL
替換為0,但有助於准確了解您要執行的操作。 您為什么如此確信查詢本身無法進行任何修改?
另一種解決方案是將整個查詢放在另一個包裝器中。
看起來像:
SELECT *
FROM (
[your whole query here]
) AS inner
WHERE inner.Date IS NOT NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.