![](/img/trans.png)
[英]Please help me fix my code so it runs correctly, it keeps telling me I have Error Code 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 BY
和IFNULL
(你不應該因為你在查詢中沒有任何聚合函數),你應該使用完整的列定義,如SELECT
:
SELECT IFNULL(idfactura,0)
FROM vtiger_cobranza
WHERE idfactura=46747
GROUP BY IFNULL(idfactura,0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.