我的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)
解决方案 »
- MSSQL转为MYSQL后的语句转变
- 求解!mysql存储过程
- 明明是正确的,报错,抓狂了
- 求一个SQL或存储过程的写法
- C 语言获取某时刻数据库中所有记录的镜像
- 都说MySQL好、不断发展,谁能举出实例让我信服的说MySQL性能比SQL Server好?
- 救援,关于php调用mysql的问题,急
- Mysql中如果count()函数出来的是0则没有返回记录,有没有什么方法可以使得它变得有返回
- 如何把标题相同的时间不是第一的标注del为1,把url相同的,时间不是第一的,del标注为1
- mysql的install binary文件
- 关于MYSQL命令的无法执行的问题
- 【求助】应用从ORACLE转MYSQL数据库的疑问
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是指一个元组 (记录)不重复,而不是某一个域(字段)不重复。