2017-08-31 24 views
-1

有一對錶帳戶和accounts_prop一對多的關係我嘗試獲取與最後日期(二)帳戶的最後一個屬性,ONA許多關係最後一個記錄錯誤的,因爲空日期

具有以下查詢返回的記錄,但有當日期等於與0000-00-00然後日期前被計算爲最大日

SELECT c.account_id, p.bis 
FROM accounts as c INNER JOIN 
     (
      SELECT account_id, 
        MAX(bis) MaxDate 
      FROM accounts_prop 
      where accounts_prop.bis != 0 
      GROUP BY account_id 
     ) MaxDates ON c.account_id = MaxDates.account_id INNER JOIN 
     accounts_prop p ON MaxDates.account_id = p.account_id 
        AND MaxDates.MaxDate = p.bis 

如何排除記錄,其中最後二日是平等問題0000-00-00

+0

你都不清楚。請詳細解釋。例如,我們無法通過被告知的「用最後日期獲取帳戶的最後一個屬性」來編寫代碼。閱讀並執行[mcve]。我們應該能夠運行它並根據您的輸入得到您的輸出,以及期望的輸出。請告訴我們每個表格中的任意一行如何根據其列和表中的約束條件來說明業務情況。 – philipxy

回答

0

我假設你有一個DATE數據類型

從MySQL文件B.5.4.2 Problems Using DATE Columns

特殊的「零」日期「0000-00-00」可以存儲和 「0000-00-00檢索」。當一個「0000-00-00」日期是通過連接器/ ODBC, 用它自動轉換爲NULL,因爲ODBC不能處理 樣日期

我建議您嘗試以下的一個你子查詢:

SELECT account_id, 
     MAX(bis) MaxDate 
FROM accounts_prop 
where accounts_prop.bis > '0000-00-00'    
GROUP BY account_id 

SELECT account_id, 
     MAX(bis) MaxDate 
FROM accounts_prop 
where accounts_prop.bis IS NOT NULL    
GROUP BY account_id 
+0

感謝您的反饋嘗試了所有變體,但在空日期仍有問題,我使用mariadb – fefe

相關問題