clickhouse創建視圖SQL 錯誤 [47]: ClickHouse exception, code: 47


使用clickhouse創建視圖時報錯

SQL 錯誤 [47]: ClickHouse exception, code: 47, host: localhost, port: 8123; Code: 47, e.displayText() = DB::Exception: Missing columns:xxx    required columns:  yyy

因為多張表內有相同名稱的字段,所以在創建視圖時的子查詢里用到了別名,其實SQL語句在直接運行查詢時是可以正常運行的,

例如 :

--查詢可以正常執行
SELECT
  A.ID AS AID,B.ID AS BID
FROM
  TA AS A
INNER JOIN
  TB AS B ON 1=1

--創建視圖報錯
CREATE VIEW V_TEST AS
SELECT
  A.ID AS AID,B.ID AS BID
FROM
  TA AS A
INNER JOIN
  TB AS B ON 1=1

查找官網文檔中CREATE VIEW中沒找到特殊的說明,只是在查詢相關的文檔中找到兩個地方對別名的提示,抱着試試看的態度對語句進行了修改

 

FROM 子句

可以使用包含在括號里的子查詢來替代表。 在這種情況下,子查詢的處理將會構建在外部的查詢內部。 不同於SQL標准,子查詢后無需指定別名。為了兼容,你可以在子查詢后添加‘AS 別名’,但是指定的名字不能被使用在任何地方。

JOIN 子句

子查詢不允許您設置別名或在其他地方引用它們。 USING中指定的列必須在兩個子查詢中具有相同的名稱,而其他列必須具有不同的名稱。您可以通過使用別名的方式來更改子查詢中的列名(示例中就分別使用了'hits'與'visits'別名)。

 

--修改后的SQL
CREATE VIEW V_TEST AS
SELECT
  AID,BID
FROM
  (SELECT ID AS AID FROM TA) AS A
INNER JOIN
  (SELECT ID AS BID FROM TB) AS B ON 1=1

如有錯誤,請留言改正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM