编辑:我正在使用phpMyAdmin界面,并且我已经将代码从phpMyAdmin复制/粘贴到此处。当我运行以下代码时,phpMyAdmin似乎在运行“不同的代码”,并生成一些引用该“不同的代码”的错误消息,从而引起巨大的混乱。
**最终编辑:似乎是Safari造成的:当我尝试运行下面的第二个查询时,它会运行“不同的查询”。改用Firefox,它会生成正确的结果。感谢您的帮助,对不起您的困惑。 **
我有两个表格:newsFeed,评论,
** newsFeeds包含列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 FROMcommentsLIMIT 0, 25' at line 8
我想知道如何正确地做到这一点?
最佳答案
您应该通过删除派生表来更正此问题:
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;
关于mysql - 连接派生表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21461453/