这个问题也是莫名其妙。MYSQL中符号 % 的使用难道还有什么限制不成?mysql> select count(*) from imei;
+----------+
| count(*) |
+----------+
| 108718 |
+----------+
1 row in set (0.02 sec)mysql> select count(*) from imei where imei like "imei 012%"
-> ;
+----------+
| count(*) |
+----------+
| 108756 |---------数据怎么回比总数还大?imei段都是以 imei 012 开头的。
+----------+
1 row in set (0.09 sec)mysql>
+----------+
| count(*) |
+----------+
| 108718 |
+----------+
1 row in set (0.02 sec)mysql> select count(*) from imei where imei like "imei 012%"
-> ;
+----------+
| count(*) |
+----------+
| 108756 |---------数据怎么回比总数还大?imei段都是以 imei 012 开头的。
+----------+
1 row in set (0.09 sec)mysql>
解决方案 »
- mysql设置表A所有记录中,只能有一条记录valiad字段值为1
- 请教一个查询的写法:找出 min()和max()值所在行对应的其它值
- vb.net如何与MySql连接
- 在postgres数据库中有一个data型字段,如何从这字段中分别提取年,月,日?sql语句如何来实现?
- 一个在sql server 中很简单的问题,怎么在mysql数据库中直接插入一条记录呀?
- 如何将oracle中的视图转换到MYSQL中,要包括表结构和表中的数据
- 谁有MYSQL 4.1 给我 一个份
- 求大神帮忙写个语句
- mysql如何对一个字符串每个字符间添加空格
- 怎么样把MYSQL的数据库文件拿出来
- 请问怎么插入一系列随机数?
- mysqlfront 连接时出错,出错信息为“ host is not allowed to connect to this MySQL server”
left 也有同样的错误!?mysql> select count(*) from imei where left(imei, 8) = "imei 012" ;
+----------+
| count(*) |
+----------+
| 108756 |
+----------+
1 row in set (0.06 sec)mysql> select count(*) from imei;
+----------+
| count(*) |
+----------+
| 108718 |
+----------+
1 row in set (0.00 sec)
下面举一个例子:
mysql> EXPLAIN SELECT COUNT(*) FROM Headline WHERE ExpireTime >= 1112201600 \G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: Headline type: ALLpossible_keys: NULL ----------------------------->这里是可能存在的keys,可以有多个 key: NULL-------------------->执行上面SQL语句的时候有没有使用index或key key_len: NULL ref: NULL rows: 302116-------------------->执行上面的SQL语句,所要扫描的记录数 Extra: Using where1 row in set (0.00 sec)下面又是一个例子:mysql> SELECT COUNT(*) FROM Headline WHERE ExpireTime >= 1112201600;+----------+| COUNT(*) |+----------+| 3971 |+----------+1 row in set (0.01 sec)mysql> EXPLAIN SELECT COUNT(*) FROM Headline WHERE ExpireTime >= 1112201600 \G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: Headline type: rangepossible_keys: ExpireTime key: ExpireTime key_len: 4 ref: NULL rows: 12009 Extra: Using where; Using index1 row in set (0.00 sec)
+-----------------+-----------------+----------------+------------+
| imei | nal | sn | dateTime |
+-----------------+-----------------+----------------+------------+
108 rows in set (0.38 sec)mysql> select * from imei where datetime like "2006-03-21%" and imei like "imei 01%";
+-----------------+-----------------+----------------+------------+
| imei | nal | sn | dateTime |
+-----------------+-----------------+----------------+------------+
70 rows in set (0.05 sec)注意1: 108-70 == 38 ****************************************************************
mysql> select count(*) from imei;
+----------+
| count(*) |
+----------+
| 108718 |
+----------+
1 row in set (0.02 sec)mysql> select count(*) from imei where imei like "imei 012%"
-> ;
+----------+
| count(*) |
+----------+
| 108756 |---------数据怎么回比总数还大?imei段都是以 imei 012 开头的。
+----------+
1 row in set (0.09 sec)注意2: 108756-108718 == 38 这个38 好象很特别。是缓存造成的吗?!