Mysql 固定的;每个派生表都必须有自己的别名;现在获取列不需要';不存在错误
我正在努力使这个查询工作。对不起,我是mysql新手Mysql 固定的;每个派生表都必须有自己的别名;现在获取列不需要';不存在错误,mysql,group-by,inner-join,Mysql,Group By,Inner Join,我正在努力使这个查询工作。对不起,我是mysql新手 $sql = "SELECT * FROM mutamba_posts INNER JOIN ( SELECT aluno_id FROM mutamba_amigos GROUP BY aluno_id) ON mutamba_amigos.aluno_id = mutamba_posts.post_aluno_id WHERE mutamba_amigos.amizade_id IN
$sql = "SELECT * FROM mutamba_posts
INNER JOIN ( SELECT aluno_id FROM mutamba_amigos GROUP BY aluno_id)
ON mutamba_amigos.aluno_id = mutamba_posts.post_aluno_id
WHERE mutamba_amigos.amizade_id IN (SELECT amizade_id FROM mutamba_amigos WHERE aluno_id = '{$myid}')
ORDER BY mutamba_posts.post_date DESC LIMIT {$start}, {$limit}";
获取错误:每个派生表都必须有自己的别名
我把它改成:
$sql = "SELECT * FROM mutamba_posts
INNER JOIN ( SELECT aluno_id AS aluno_id, amizade_id as amizade_id FROM mutamba_amigos GROUP BY aluno_id)
aluno_id ON mutamba_amigos.aluno_id = mutamba_posts.post_aluno_id
WHERE mutamba_amigos.amizade_id IN (SELECT amizade_id AS amizade_id FROM mutamba_amigos WHERE aluno_id = '{$myid}')
ORDER BY mutamba_posts.post_date DESC LIMIT {$start}, {$limit}";
现在我得到了错误:“在'in/ALL/ANY子查询'中的未知列'mutamba_amigos.amizade_id'”
有什么帮助吗?您需要为子查询中的每个临时表指定一个别名
SELECT *
FROM mutamba_posts
INNER JOIN
(
SELECT aluno_id
FROM mutamba_amigos
WHERE mutamba_amigos.amizade_id IN
(
SELECT amizade_id FROM mutamba_amigos WHERE aluno_id = '{$myid}'
)
GROUP BY aluno_id
) mutamba_amigos ON mutamba_amigos.aluno_id = mutamba_posts.post_aluno_id
ORDER BY mutamba_posts.post_date DESC
LIMIT {$start}, {$limit}
在第一个内部联接子查询中,您分配了一个别名“aluno_id”,我想这不是您的意思。我认为你的查询结构将简化为
SELECT
mp.*
FROM
mutamba_posts mp
JOIN mutamba_amigos ma
ON mp.post_aluno_id = ma.aluno_id
WHERE
mp.post_aluno_id = '{$myid}'
ORDER BY
mp.post_date DESC
LIMIT {$start}, {$limit}
总之,您的查询是从POSTS表开始的,然后通过“aluno_id”查找AMIGOS表以获得AMIZADE_id。但是,然后您使用AMIZADE_id返回AMIGOS表,通过它的“aluno_id”。因此,您似乎正在寻找由“aluno_id”人员提供的任何帖子,该人员按日期排序(desc)。看起来您对记录进行了双重限定,以返回原始的基础“aluno_id”值
将来,对于这样的事情,您应该尝试发布每个的一些示例数据,并显示您想要得到的示例。查询中各个列的简单(甚至是缩写)表结构以及列之间带有空格作为制表符的数据都不起作用。您需要为子查询提供别名…可能是因为别名。感谢您的快速回复,但我仍然在“in/ALL/ANY subquery”中获得“未知列”mutanba_amigos.amizade_id”在内部查询中添加了
where
子句