![](/img/trans.png)
[英]Create temp-table with twitter users aggregated text grouped by month
[英]SQL Syntax error on named temp-table
誰能給我一個提示,為什么以下查詢引發語法錯誤?
SELECT *
FROM
(
( SELECT cu.ID id
, name
, ego_id
, u.fb_id
FROM contact_users cu
JOIN users u
ON cu.ego_id = u.ID
) temp
LEFT
JOIN fb_user
ON temp.fb_id = fb_user.user_fb_id
) T4
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near 'T4'...
如果我刪除T4
一切都很好。
我正在使用MySQL 5.5.47
為什么以下查詢引發語法錯誤?
因為如果一個內聯視圖不存在,則無法為它命名。
卸下T4時,引擎只會看到()的操作順序。 當您添加別名時,它假定存在格式正確的內聯視圖,因此將查找不存在的正確語法(至少是SELECT和FROM)。
簡單地說:
別名T4沒有選擇或從; 解決此問題:
(
和結尾) T4
(不需要) 更多詳情
您的Temp別名之所以有效,是因為它是一個完整而准確的查詢,可以單獨運行。
SELECT cu.ID id
, name
, ego_id
, u.fb_id
FROM contact_users cu
JOIN users u
ON cu.ego_id = u.ID
在哪里:
( SELECT cu.ID id
, name
, ego_id
, u.fb_id
FROM contact_users cu
JOIN users u
ON cu.ego_id = u.ID
) temp
LEFT
JOIN fb_user
ON temp.fb_id = fb_user.user_fb_id
不是完整而准確的SQL語句來生成結果集。 如您所見,這缺少關鍵字“ SELECT”和“ FROM”。 我想您可以消除左連接,它會起作用,但我認為這樣做不會達到預期的結果。
通過消除T4,引擎不會嘗試將()之間的數據解析為有效的SQL語句,而是僅將()視為操作順序,因為()無關緊要引擎的外部看不到語法錯誤。
有Query 1
或Query 2
查詢1
SELECT *
FROM
(
SELECT *
FROM
(
SELECT cu.ID as id, name, ego_id, u.fb_id
FROM contact_users as cu
JOIN users as u
ON cu.ego_id = u.ID
) temp
LEFT OUTER JOIN fb_user
ON temp.fb_id = fb_user.user_fb_id
) T4
查詢2
SELECT cu.ID as id, name, ego_id, u.fb_id, fb_user.*
FROM contact_users as cu
JOIN users as u
ON cu.ego_id = u.ID
LEFT OUTER JOIN fb_user
ON u.fb_id = fb_user.user_fb_id
我更喜歡查詢2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.