使用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
如有錯誤,請留言改正