簡體   English   中英

MariaDB 不斷向我拋出錯誤 1054,我該如何解決?

[英]MariaDB keeps throwing me error 1054, how can I fix it?

因此,多年來我一直在使用具有多個客戶端的系統,並將其安裝在 MariaDB 10.3.22 的服務器上。 它不斷向我拋出這樣的查詢錯誤:

SELECT *
  FROM ( (SELECT facturaaid 
         FROM vtiger_facturaa 
         INNER JOIN vtiger_crmentity ON crmid = facturaaid 
         WHERE facturaaid=46747) 
       UNION ALL 
       (SELECT IFNULL(idfactura,0)
        FROM vtiger_cobranza 
        WHERE idfactura=46747 
  GROUP BY idfactura) ) AS tabla      
WHERE facturaaid > 0;

這是錯誤

錯誤

請注意,在第二個子查詢中,它在所選列上沒有任何別名。 我這么說是因為當我把它寫下來時,它工作得很好。 但是如果我寫第二個 select 就像“SELECT idfactura”工作得很好,所以問題(我猜)是在列上運行而不是給它一個別名。 我的意思是,下一個查詢運行良好。

SELECT *
  FROM ( (SELECT facturaaid 
         FROM vtiger_facturaa 
         INNER JOIN vtiger_crmentity ON crmid = facturaaid 
         WHERE facturaaid=46747) 
       UNION ALL 
       (SELECT IFNULL(idfactura,0) as facturaaid
        FROM vtiger_cobranza 
        WHERE idfactura=46747 
  GROUP BY idfactura) ) AS tabla      
WHERE facturaaid > 0;

或者這個:

SELECT *
  FROM ( (SELECT facturaaid 
         FROM vtiger_facturaa 
         INNER JOIN vtiger_crmentity ON crmid = facturaaid 
         WHERE facturaaid=46747) 
       UNION ALL 
       (SELECT facturaaid 
        FROM vtiger_cobranza 
        WHERE idfactura=46747 
  GROUP BY idfactura) ) AS tabla      
WHERE facturaaid > 0;

除此之外,我沒有寫任何 ORDER 子句,我不明白為什么我必須寫別名才能讓它工作。 問題是這不是整個系統上唯一這樣的查詢,所以我無法修復所有這些,這將浪費大量時間。

所以我的問題是,我是否需要降級 mariadb 服務器版本(在舊版本的 mysql 服務器中完美運行,如 Mysql 5)? 或者有一些我不知道的配置修復?

第二個 UNION 具有以下形式:

SELECT IFNULL(idfactura,0)
FROM vtiger_cobranza 
WHERE idfactura=46747 
GROUP BY idfactura

錯誤消息是指GROUP BY 你可能想把它寫成:

SELECT DISTINCT idfactura
FROM vtiger_cobranza 
WHERE idfactura=46747 

IFNULL - 並沒有真正意義,因為idfactura由於條件原因不能是NULL 如果你真的想使用GROUP BYIFNULL (你不應該因為你在查詢中沒有任何聚合函數),你應該使用完整的列定義,如SELECT

SELECT IFNULL(idfactura,0)
FROM vtiger_cobranza 
WHERE idfactura=46747 
GROUP BY IFNULL(idfactura,0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM