有两张表 一个为学员表(id,学员id,姓名性别)另一个表 :成绩表(id, 课程id,学员id,成绩)
现在查询有两科以上不及格的学员我 用了2种方法
1.
SELECT 姓名
FROM 成绩表 INNER JOIN 学员表 ON 成绩表.学员ID = 学员表.ID
WHERE 成绩 < 60
GROUP BY 姓名
HAVING COUNT(姓名) >=2
2.
SELECT 姓名
FROM 成绩表 INNER JOIN 学员表 ON 成绩表.学员ID = 学员表.ID
WHERE 成绩 < 60
GROUP BY 姓名
HAVING COUNT(成绩) >=2
都能查出来
谁能告诉我区别是什么
现在查询有两科以上不及格的学员我 用了2种方法
1.
SELECT 姓名
FROM 成绩表 INNER JOIN 学员表 ON 成绩表.学员ID = 学员表.ID
WHERE 成绩 < 60
GROUP BY 姓名
HAVING COUNT(姓名) >=2
2.
SELECT 姓名
FROM 成绩表 INNER JOIN 学员表 ON 成绩表.学员ID = 学员表.ID
WHERE 成绩 < 60
GROUP BY 姓名
HAVING COUNT(成绩) >=2
都能查出来
谁能告诉我区别是什么
解决方案 »
- WindowsXP开发程序Windows7 .net framework 2.0 x64未能安装成功
- 关于数据的存储问题!
- 大家谈谈自己用MSSQL的心得吧。随便谈谈。我最后为大家总结。赌博输了。没什么分。等有分了我会加上。各位。谈谈。
- 怎么样把xml文件中的内容保存到xml类型的变量中
- sqlserver 2008 ssis问题,急
- 表结构发生变化(比喻增加了字段),相关视图必须假修改才能正确?!
- 一个sql查询的问题
- 临时表排序
- 分布式查询的问题????
- 我在SQL Enterprise Manager中修改了一表名即表A改为表B,在VB中调用的SQL语句随即做了修改,但执行该语句时提示Invalid Object Name A,
- 最菜的问题,不信看看到底有多菜。
- 怎样将表中的某些记录插入到另外一个表?
FROM 成绩表 INNER JOIN 学员表 ON 成绩表.学员ID = 学员表.ID
WHERE 成绩 < 60
GROUP BY 姓名
HAVING COUNT(1) >=2
--HAVING COUNT(1) >=2 实际是取到按姓名分组后,数量大于2个的,SELECT 姓名
FROM 成绩表 INNER JOIN 学员表 ON 成绩表.学员ID = 学员表.ID
WHERE 成绩 < 60
GROUP BY 姓名
--取到的结果一样,
--那么COUNT(1)\COUNT(成绩)\COUNT(姓名)取到的也一样
和
count(*) 是有区别的 ,
比如 tab
a b
1 2
2 Null
Null Nullcount(1) = 3
Count(a) = 2
Count(b) = 1
Count(*) = 3count(1) 和 count(*) 是一样的
但是count(col) -- 这里的col代表某一个具体的列的时候
会除去某一个列的NUll的值 , Null 不会计算雄关漫道真如铁 而今迈步从头越
怎么个累计法呢
一般我用count(*)
如果用count(列名),是要考虑null的情况,
即由from和where子句得到的结果集里,该字段是否有可能是null
我这sqlserver 2000
count(1)与count(*)都算 null的