Mysql SQL';计数';功能不工作
我希望SQL查询返回总行数。以下是我的疑问Mysql SQL';计数';功能不工作,mysql,sql,count,Mysql,Sql,Count,我希望SQL查询返回总行数。以下是我的疑问 SELECT COUNT(*) AS tot_std FROM `student_main` AS sm, `student_subjects` AS stds, `sub_subjects` AS ss WHERE stds.`student_id` = sm.`studen. t_id` AND stds.`subs_id` = ss.`subs_id` AND stds.`subs_id` = 1
SELECT COUNT(*) AS tot_std
FROM `student_main` AS sm,
`student_subjects` AS stds,
`sub_subjects` AS ss
WHERE stds.`student_id` = sm.`studen. t_id`
AND stds.`subs_id` = ss.`subs_id`
AND stds.`subs_id` = 1
AND sm.`std_postcode` LIKE '%HA02AN%'
GROUP BY stds.`student_id`
该查询连接三个表:
1) student\u main
它是主表,存储学生信息。
2) sub_subjects
这是存储科目/课程信息的主表
3) student_subjects
此表包含student_id和subs_id作为外键,并显示学生正在学习的科目
以下是学生受试者
表的屏幕截图
现在,当我运行查询时,它应该在输出中显示3,因为总共有3个学生正在学习id为1的主题。但是,查询会给出如下输出:
请提供帮助。通过删除
组。并学习正确的显式JOIN
语法:
SELECT COUNT(*) AS tot_std
FROM `student_main` sm JOIN
`student_subjects` stds
ON stds.`student_id` = sm.`studen. t_id` JOIN
`sub_subjects` ss
ON stds.`subs_id` = ss.`subs_id`
WHERE stds.`subs_id` = 1 AND sm.`std_postcode` LIKE '%HA02AN%';
简单规则:切勿在FROM
子句中使用逗号*始终将显式JOIN
语法与ON
子句一起使用。删除分组依据。并学习正确的显式JOIN
语法:
SELECT COUNT(*) AS tot_std
FROM `student_main` sm JOIN
`student_subjects` stds
ON stds.`student_id` = sm.`studen. t_id` JOIN
`sub_subjects` ss
ON stds.`subs_id` = ss.`subs_id`
WHERE stds.`subs_id` = 1 AND sm.`std_postcode` LIKE '%HA02AN%';
简单规则:切勿在FROM
子句中使用逗号*始终使用显式的JOIN
语法和ON
子句。使用group by
时,所有聚合函数(如count()
)都适用于每个组,而不是group by的完整结果。按删除组。当您使用groupby
时,所有聚合函数(如count()
)都将应用于每个组,而不是由于groupby而产生的完整结果。按删除组。它会有用的谢谢你的回答。我已经用简单联接编写了所有查询。我希望它不会产生任何问题???@Ajmal“Simple”连接自1992年以来就被有效地弃用了。那几乎是四分之一个世纪前的事了。是你改掉这个坏习惯的时候了。从现在起我会改掉它,但我在我的项目中的很多地方都使用过它。我希望这不会造成任何问题。谢谢你的回答。我已经用简单联接编写了所有查询。我希望它不会产生任何问题???@Ajmal“Simple”连接自1992年以来就被有效地弃用了。那几乎是四分之一个世纪前的事了。是你改掉这个坏习惯的时候了。从现在起我会改掉它,但我在我的项目中的很多地方都使用过它。我希望这不会造成任何问题。