Mysql 如何将所选查询作为别名用于另一个子查询?

Mysql 如何将所选查询作为别名用于另一个子查询?,mysql,subquery,alias,Mysql,Subquery,Alias,我试图为我的问题找到答案,但找不到适合我的答案。例如,我有两个表,分别是学生表和测试表。学生有两个字段:学生id、姓名和考试、考试id和学生id。 我要做的是查询打印学生id、姓名和学生完成的总测试。我失败的查询是 SELECT S.student_id, T.TOTAL FROM students as S , ((SELECT student_id, COUNT(test_id) AS TOTAL FROM tests GROUP BY student_id) AS T) WHERE S.

我试图为我的问题找到答案,但找不到适合我的答案。例如,我有两个表,分别是学生表和测试表。学生有两个字段:学生id、姓名和考试、考试id和学生id。 我要做的是查询打印学生id、姓名和学生完成的总测试。我失败的查询是

SELECT S.student_id, T.TOTAL 
FROM students as S , ((SELECT student_id, COUNT(test_id) AS TOTAL
FROM tests
GROUP BY student_id) AS T)
WHERE S.student_id = T.student_id;
它回来了

第1行出现错误1064(42000):SQL语法中有错误;检查与MySQL服务器版本相对应的手册,以了解第2行“AS T”附近使用的正确语法

如何将alias selected查询设置为“临时表”,以便在另一个子查询中使用?
请给我最简单的答案和MySQL中的高级答案,这样我可以比较这两个答案,以便以后学习。谢谢

没有真正不同的逗号分隔和写连接。 我更愿意显式地编写连接,因为有不同的连接类型,所以我在那里做的事情更清楚

使用显式连接

SELECT S.student_id, T.TOTAL 
FROM students AS S
INNER JOIN (
    SELECT student_id, COUNT(test_id) AS TOTAL
    FROM tests GROUP BY student_id
) AS T ON S.student_id = T.student_id;
在选择中使用子查询

SELECT S.student_id, (SELECT COUNT(test_id) AS TOTAL
FROM tests
where tests.student_id = S.student_id
GROUP BY student_id) as Total
FROM students AS S;
按自己的方式进行(从子查询中删除额外的大括号)


请不要使用基于逗号的隐式联接。相反,请使用标准的
Join
ing方法。因此,我的查询问题是由学生提出的,使用“逗号”而不使用内部连接,先生?不,这不是错误,只是您的首选编写方式。检查我的答案两个问题都应该有效。我认为你的错误是,你有额外的支架,我已经删除,请再次检查是否都工作或没有。我不是先生!ups,对不起,呵呵。我确实移除了大括号,但仍然不起作用。我添加了一个实例,两个查询产生相同的结果。除非您在查询中有其他人
SELECT S.student_id, T.TOTAL 
FROM students AS S , (SELECT student_id, COUNT(test_id) AS TOTAL
FROM tests
GROUP BY student_id) AS T
WHERE S.student_id = T.student_id;