我的MYSQL 是 5.1.50 版本
mysql> SELECT * FROM 学生成绩表;
+------+------+------+------+
| 姓名 | 语文 | 数学 | 英语 |
+------+------+------+------+
| 张三 |   56 |   88 |  111 |
| 李四 |   79 |    4 |  111 |
| 王五 |   87 |   66 |  111 |
| 赵六 |   29 |   55 |  111 |
| 田七 |   56 |   55 |  111 |
+------+------+------+------+
5 rows in set (0.00 sec)mysql> SELECT DISTINCT 语文,  数学 FROM 学生成绩表;
+------+------+
| 语文 | 数学 |
+------+------+
|   56 |   88 |
|   79 |    4 |
|   87 |   66 |
|   29 |   55 |
|   56 |   55 |
+------+------+
5 rows in set (0.00 sec)mysql> DESCRIBE 学生成绩表;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| 姓名  | char(50) | YES  |     | NULL    |       |
| 语文  | int(11)  | YES  |     | NULL    |       |
| 数学  | int(11)  | YES  |     | NULL    |       |
| 英语  | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
4 rows in set (0.02 sec)

解决方案 »

  1.   

    SELECT DISTINCT 语文, DISTINCT  数学 FROM 学生成绩表;这样。
      

  2.   

    运行错误
    mysql> SELECT DISTINCT 语文, DISTINCT 数学 FROM 学生成绩表;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near 'DISTI
    NCT 数学 FROM 学生成绩表' at line 1
      

  3.   

    楼主,你的disinct 不是好使吗,因为你distinct2个字段,而
    语文,  数学找2个字段没有一样的,比如2行语文,  数学都是+------+------+------+------+
    | 姓名 | 语文 | 数学 | 英语 |
    +------+------+------+------+
    | 张三 |   56 |   88 |  111 |
    | 李四 |   56 |   88 |  111 |
    +------+------+------+------+
    主要的话disinct出来就一条了。
      

  4.   


    2个56是属于两条不同的记录。楼主的意思是想查询出语文分数不同的和数学分数不同的,可以这样
    SELECT DISTINCT 语文 FROM 学生成绩表 union all
    SELECT DISTINCT 数学 FROM 学生成绩表 ;
      

  5.   

    楼主还是再看看distinct的用法,这个原理和group 类似,不过就是在group by 的前提下再过滤,
      

  6.   

    mysql> SELECT DISTINCT 语文,  数学 FROM 学生成绩表;
    +------+------+
    | 语文 | 数学 |
    +------+------+
    |   56 |   88 |
    |   79 |    4 |
    |   87 |   66 |
    |   29 |   55 |
    |   56 |   55 |
    +------+------+里面的distinct管着后面的所有的字段,只要语文和数学两个字段组合在一起的值 不重复,那么就会select出来的。你看你的结果应该是符合这个规则的。
      

  7.   

    mysql> select distinct `语文`, `数学` from `学生成绩表`;
    +------+------+
    | 语文 | 数学 |
    +------+------+
    |   56 |   88 |
    |   79 |    4 |
    |   87 |   66 |
    |   29 |   55 |
    |   56 |   55 |
    +------+------+
    5 rows in set (0.03 sec)distinct是指一个元组 (记录)不重复,而不是某一个域(字段)不重复。
      

  8.   

    楼主需要了解一下SQL语言基础知识