我的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)
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)
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
语文, 数学找2个字段没有一样的,比如2行语文, 数学都是+------+------+------+------+
| 姓名 | 语文 | 数学 | 英语 |
+------+------+------+------+
| 张三 | 56 | 88 | 111 |
| 李四 | 56 | 88 | 111 |
+------+------+------+------+
主要的话disinct出来就一条了。
2个56是属于两条不同的记录。楼主的意思是想查询出语文分数不同的和数学分数不同的,可以这样
SELECT DISTINCT 语文 FROM 学生成绩表 union all
SELECT DISTINCT 数学 FROM 学生成绩表 ;
+------+------+
| 语文 | 数学 |
+------+------+
| 56 | 88 |
| 79 | 4 |
| 87 | 66 |
| 29 | 55 |
| 56 | 55 |
+------+------+里面的distinct管着后面的所有的字段,只要语文和数学两个字段组合在一起的值 不重复,那么就会select出来的。你看你的结果应该是符合这个规则的。
+------+------+
| 语文 | 数学 |
+------+------+
| 56 | 88 |
| 79 | 4 |
| 87 | 66 |
| 29 | 55 |
| 56 | 55 |
+------+------+
5 rows in set (0.03 sec)distinct是指一个元组 (记录)不重复,而不是某一个域(字段)不重复。