现在有课程这么一张表,里面记录了学生所学课程的记录,有的学的课程多,有的学的课程少?我现在想通过一条查询语句获得学习课程最多的那个学生的,请问这条查询语句怎么写?

解决方案 »

  1.   


    经过测试,能够得到出现最多次数的那个学生,但是在表中出现的次数和去除重复出现的次数不一样,我想,如果先去除重复再获得她在表中实际出现的次数。这条语句返回的第一条出现的次数是82次(未去除重复后的82次)SELECT DISTINCT stuName, re, projectName, className, count( * ) AS count
    FROM stu_class_xueke
    WHERE className='2012级幼教(9)班'
    GROUP BY stuName
    ORDER BY count DESC
    LIMIT 1SELECT distinct stuName,projectName,scores,re
    FROM stu_class_xueke
    where className='2012级幼教(9)班' AND stuName='刘小景'但是通过这条语句看到的结果数是37条,请问我怎么去除重复后能够获得实际的37条的次数信息
      

  2.   

    select count(distinct projectName)
      

  3.   

    1 1
    2 2
    3 3
    1 2
    1 2
    1 3
    name   id      
    select b.id,count(*) count1 from b
    group by b.id
    ORDER BY count1 DESC limit 1; 
    写个小例子
      

  4.   


    经过测试,能够得到出现最多次数的那个学生,但是在表中出现的次数和去除重复出现的次数不一样,我想,如果先去除重复再获得她在表中实际出现的次数。这条语句返回的第一条出现的次数是82次(未去除重复后的82次)SELECT DISTINCT stuName, re, projectName, className, count( * ) AS count
    FROM stu_class_xueke
    WHERE className='2012级幼教(9)班'
    GROUP BY stuName
    ORDER BY count DESC
    LIMIT 1SELECT distinct stuName,projectName,scores,re
    FROM stu_class_xueke
    where className='2012级幼教(9)班' AND stuName='刘小景'但是通过这条语句看到的结果数是37条,请问我怎么去除重复后能够获得实际的37条的次数信息你要取出有多少课程吗??
      

  5.   

    select distinct stuid,count(*) as sum from stu_class_xueke group by stuid order by sum desc
      

  6.   


    SELECT DISTINCT stuName, re, projectName, className, count( * ) AS count
    FROM stu_class_xueke
    WHERE className='2012级幼教(9)班'
    GROUP BY stuName
    ORDER BY count DESC
    LIMIT 6我这么写,结果给我报错啊
      

  7.   


    经过测试,能够得到出现最多次数的那个学生,但是在表中出现的次数和去除重复出现的次数不一样,我想,如果先去除重复再获得她在表中实际出现的次数。这条语句返回的第一条出现的次数是82次(未去除重复后的82次)SELECT DISTINCT stuName, re, projectName, className, count( * ) AS count
    FROM stu_class_xueke
    WHERE className='2012级幼教(9)班'
    GROUP BY stuName
    ORDER BY count DESC
    LIMIT 1SELECT distinct stuName,projectName,scores,re
    FROM stu_class_xueke
    where className='2012级幼教(9)班' AND stuName='刘小景'但是通过这条语句看到的结果数是37条,请问我怎么去除重复后能够获得实际的37条的次数信息你要取出有多少课程吗??
    对,我要取出学习课程最多的那个人和其所学实际课程数37,中间不包含重复的。否则的话我就需要两条语句来实现。
      

  8.   


    还有,我想问一点,比方说我取得了学习课程最多的那个学员的id以及所学的课程的名称,这时候,同班级其他学员没有他学的课程多的情况,我想让他们学课程少的也能查到学习课程多的那个课程名称,只不过取的的值为null,这样一个左外链接该怎么写,不知道我表述的绕口不绕口。这样吧 我那一个图形来表示一下把。实际表数据:
    通过创建的视图或者连接查询语句查询出来的临时表:
    想实现下面这个视图临时表,请问这个sql语句要怎么写?
      

  9.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  10.   

    班级表:/*
    Navicat MySQL Data TransferSource Server         : MySQL
    Source Server Version : 50528
    Source Host           : localhost:3306
    Source Database       : jcmsdbTarget Server Type    : MYSQL
    Target Server Version : 50528
    File Encoding         : 65001Date: 2013-07-17 13:48:56
    */SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
    -- Table structure for `classtable`
    -- ----------------------------
    DROP TABLE IF EXISTS `classtable`;
    CREATE TABLE `classtable` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `className` varchar(20) DEFAULT NULL,
      `re` text,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;-- ----------------------------
    -- Records of classtable
    -- ----------------------------
    INSERT INTO `classtable` VALUES ('1', '2011级数控', '');
    INSERT INTO `classtable` VALUES ('2', '2011级幼教(1)班', '');
    INSERT INTO `classtable` VALUES ('3', '2011级幼教(2)班', '');
    INSERT INTO `classtable` VALUES ('4', '2011级幼教(3)班', '');
    INSERT INTO `classtable` VALUES ('5', '2011级幼教(4)班', '');
    INSERT INTO `classtable` VALUES ('6', '2011级幼教(5)班', '');
    INSERT INTO `classtable` VALUES ('7', '2011级幼教(6)班', '');
    INSERT INTO `classtable` VALUES ('8', '2012级幼教(1)班', '');
    INSERT INTO `classtable` VALUES ('9', '2012级幼教(2)班', '');
    INSERT INTO `classtable` VALUES ('10', '2012级幼教(3)班', '');
    INSERT INTO `classtable` VALUES ('13', '2012级幼教(4)班', '');
    INSERT INTO `classtable` VALUES ('14', '2012级幼教(5)班', '');
    INSERT INTO `classtable` VALUES ('15', '2012级幼教(6)班', '');
    INSERT INTO `classtable` VALUES ('16', '2012级幼教(7)班', '');
    INSERT INTO `classtable` VALUES ('17', '2012级幼教(8)班', '');
    INSERT INTO `classtable` VALUES ('18', '2012级幼教(9)班', '');学生信息表:/*
    Navicat MySQL Data TransferSource Server         : MySQL
    Source Server Version : 50528
    Source Host           : localhost:3306
    Source Database       : jcmsdbTarget Server Type    : MYSQL
    Target Server Version : 50528
    File Encoding         : 65001Date: 2013-07-17 13:50:32
    */SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
    -- Table structure for `studentinfo`
    -- ----------------------------
    DROP TABLE IF EXISTS `studentinfo`;
    CREATE TABLE `studentinfo` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `classId` int(11) DEFAULT NULL COMMENT '级班',
      `stuNo` varchar(20) DEFAULT NULL COMMENT '学籍号',
      `stuName` varchar(10) DEFAULT NULL COMMENT '姓名',
      `stuSex` varchar(10) DEFAULT NULL,
      `stuCode` varchar(19) DEFAULT NULL COMMENT '身份证号',
      `stuIntime` varchar(50) DEFAULT NULL COMMENT '入学时间',
      `stuAddress` varchar(100) DEFAULT NULL COMMENT '家庭住址',
      `stuProfessional` varchar(20) DEFAULT NULL COMMENT '专业',
      `stuLeval` varchar(10) DEFAULT NULL COMMENT '学历层次',
      `stuEducation` varchar(10) DEFAULT NULL COMMENT '制学',
      `stuSpeak` varchar(20) DEFAULT NULL COMMENT '普通话证书',
      `stuTeachar` varchar(50) DEFAULT NULL COMMENT '教师资格证',
      `stuEnd` varchar(20) DEFAULT NULL COMMENT '毕业情况',
      `re` varchar(50) DEFAULT NULL COMMENT '注备',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=787 DEFAULT CHARSET=utf8;-- ----------------------------
    -- Records of studentinfo
    -- ----------------------------
    INSERT INTO `studentinfo` VALUES ('768', '18', '121448', '展雪会', '女', '412726199502203328', '2012', '郸城县丁村乡', '学前教育', '中专', '3年制', '暂无', '暂无', '在读', '12411100100781');
    INSERT INTO `studentinfo` VALUES ('779', '18', '121459', '刘小景', '女', '411024199712274763', '2012', '鄢陵县只乐乡野岗村', '学前教育', '中专', '3年制', '暂无', '暂无', '在读', '12411100100792');
    INSERT INTO `studentinfo` VALUES ('781', '18', '121461', '郑文祎', '女', '411024199812040729', '2012', '鄢陵县马栏乡', '学前教育', '中专', '3年制', '暂无', '暂无', '在读', '12411100100794');
    学员所学科目表:/*
    Navicat MySQL Data TransferSource Server         : MySQL
    Source Server Version : 50528
    Source Host           : localhost:3306
    Source Database       : jcmsdbTarget Server Type    : MYSQL
    Target Server Version : 50528
    File Encoding         : 65001Date: 2013-07-17 14:19:05
    */SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
    -- Table structure for `stuachievement`
    -- ----------------------------
    DROP TABLE IF EXISTS `stuachievement`;
    CREATE TABLE `stuachievement` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `stuId` int(11) DEFAULT NULL COMMENT '学生id',
      `projectName` varchar(20) DEFAULT NULL COMMENT '程课名称',
      `achievement` varchar(10) DEFAULT NULL COMMENT '绩成',
      `scores` varchar(10) DEFAULT NULL,
      `re` varchar(50) DEFAULT NULL COMMENT '学期',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=51126 DEFAULT CHARSET=utf8;-- ----------------------------
    -- Records of stuachievement
    -- ----------------------------
    INSERT INTO `stuachievement` VALUES ('10711', '768', '语文', '—', '6', '1');
    INSERT INTO `stuachievement` VALUES ('10711', '768', '数学', '—', '6', '1');
    INSERT INTO `stuachievement` VALUES ('10603', '779', '语文', '—', '0', '1');
    INSERT INTO `stuachievement` VALUES ('10657', '779', '数学', '—', '0', '1');
    INSERT INTO `stuachievement` VALUES ('10711', '779', '英语', '—', '6', '1');
    INSERT INTO `stuachievement` VALUES ('10657', '779', '自然科学', '—', '0', '1');
    INSERT INTO `stuachievement` VALUES ('10657', '781', '数学', '—', '0', '1');
    INSERT INTO `stuachievement` VALUES ('10711', '781', '自然科学', '—', '6', '1');我最终想要实现的结果:
    stuId    stuName    classId     projectName   scores   re
    -------  -------    ---------   -----------   ------   -----------------
    779      刘小景     18          语文          0        1
    779      刘小景     18          数学          0        1
    779      刘小景     18          英语          6        1
    779      刘小景     18          自然科学      0        1
    781      展雪会     18          语文          6        1
    781      展雪会     18          数学          6        1
    781      展雪会     18          英语          null     1
    781      展雪会     18          自然科学      null     1
    768      郑文祎     18          语文          null     1
    768      郑文祎     18          数学          6        1
    768      郑文祎     18          英语          null     1
    768      郑文祎     18          自然科学      6        1  
    请问这样一个结果级的sql语句怎么写呢?