SQL' COUNT'功能不起作用

时间:2016-08-01 10:58:21

标签: 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  
  AND sm.`std_postcode` LIKE '%HA02AN%'
GROUP BY stds.`student_id`

查询连接三个表: 1)student_main这是主表并存储学生信息。 2)sub_subjects这是存储主题/课程信息的主表 3)student_subjects此表包含student_id和subs_id作为外键,并显示学生正在拍摄的主题。

以下是student_subjects表的屏幕截图。

enter image description here

现在当我运行查询时,它应该在输出中显示3,因为共有3名学生正在研究id为1的主题,但是查询给出了这样的输出:

enter image description here

请帮助。

1 个答案:

答案 0 :(得分:4)

删除GROUP BY。并学习正确的显式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语法。