2014-01-30 45 views
-1

編輯:我使用phpMyAdmin界面,我已經複製/ phpMyAdmin的從代碼粘貼到這裏。當我運行下面的代碼時,phpMyAdmin似乎運行「不同的代碼」,並生成一些引用「不同代碼」的錯誤消息,導致巨大的混淆。加入派生表

**最後編輯:看來Safari瀏覽器是導致此:它運行「不同的查詢」當我嘗試運行,下面第二個查詢。改用Firefox,它會生成正確的結果。感謝您的幫助和抱歉的困惑。 **

我有兩個表:新聞源,意見,其中

**新聞源包含列PID評論包含列FID **

我要加入兩個表中的行相匹配的PID = FID。我的代碼是:

SELECT * FROM newsFeeds 
INNER JOIN 
(
    SELECT * FROM 
    comments 
) 
ON comments.FID = newsFeeds.PID 

並且錯誤消息是「#1248 - 每個派生表都必須有自己的別名」。

我再根據這裏其他職位加入AS newtb)後。和代碼則是:

SELECT * FROM newsFeeds 
INNER JOIN 
(
    SELECT * FROM 
    comments 
) AS newtb 
ON newtb.FID = newsFeeds.PID 

但另一個錯誤顯示出來:#1064 - 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 'INNER JOIN(SELECTFID,COUNT(*) AScount FROMcomments LIMIT 0, 25' at line 8

我不知道如何正確地做到這一點?

+0

當您添加的別名是什麼錯誤? – Taryn

+0

問題應該是dba.se – Almo

+0

@bluefeet:該錯誤信息是:「#1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的「INNER JOIN正確的語法手冊(SELECTFID,COUNT(*)AScount FROMcomments LIMIT 0,25' 在第6行「 – Lelouch

回答

1

您應該通過刪除派生表更正此:

SELECT * 
FROM tb_1 INNER JOIN 
    tb_2 
    ON tb_2.FID = tb_1.PID; 

MySQL有兌現派生表的傾向,這會降低性能。

回答你的問題,但是,是括號後添加一個名字:

SELECT * 
FROM tb_1 INNER JOIN 
    (SELECT * 
     FROM tb_2 
    ) t2 
    ON t2.FID = tb_1.PID; 
+0

其實我也試過這個,從其他文章的答案。但是同樣的錯誤#1064。 – Lelouch

+0

@Louchouch。 。 。您的其他錯誤是因爲您缺少線條之間的空格。 'SELECTFID'應該是'SELECT FID','FROMcomments'應該是'FROM comments'。 –

+0

我認爲phpMyAdmin界面有問題。其他人指出錯誤信息與我的查詢不符。但是,謝謝。 – Lelouch