MYSQL中统计查询结果总行数的便捷方法【转载】
转自:http://ginew.blog.163.com/
今天阅读 wordpress代码时,发现一个MYSQL的关键词 SQL_CALC_FOUND_ROWS 查看手册后发现此关键词的作用是在查询时统计满足过滤条件后的结果的总数(不受 Limit 的限制)
例如: SELECT SQL_CALC_FOUND_ROWS tid from cdb_threads WHERE fid=14 LIMIT 1,10;
假设满足条件的有1000条,这里返回10条。立即使用 SELECT found_rows() AS rowcount; 则返回的 rowcount 为1000;
这样节省了SELECT count(*) AS rowcount的重复查询,可以节省比较可观的时间
===============================
以下是该放在在游味中的应用:
function mail_list_sent($uid, $start)
{
// 注意SQL_CALC_FOUND_ROWS uid之间没有逗号
$query = "SELECT SQL_CALC_FOUND_ROWS uid, real_name, current_city, msg_uid, sender_flag, msg_title, msg_content from ".TT_DBTABLEPRE."mailbox as mb1, ".TT_DBTABLEPRE."user as usr1 WHERE mb1.sender_id=usr1.uid AND mb1.sender_id=$uid AND sender_flag > 0 LIMIT $start, ".TT_PAGESIZE;
$mails = $this->db->fetch_all($query);
//查询SELECT中满足条件的行数,与LIMIT子句无关
$max_count = $this->db->fetch_first("SELECT found_rows() AS rowcount");
$tmp['state_code'] = 200;
$tmp['info'] = "OK";
$tmp['list'] = $mails;
$data = json_encode($tmp);
return $data;
}
感谢作者分享!
相关文档:
1、打开MyEclipse6.6
2、选择菜单:Window/Open Perspective/MyEclipse Database Explorer,点击OK,在左边打开DB Brower窗口。
3、在DB Brower窗口内任意空白处击右键,选择New命令,弹出Database Driver窗口
4、本窗口各项说明:
Driver template: MySQL Connector/J 选择驱动模板
& ......
问题是这样的:
一张test的表,字符集采用的latin1。
select to_id from test where to_id='cn象_王';
+---------------+
| to_id |
+---------------+
| cn陶_陶 |
| cn象_王 |
+---------------+
2 rows in set (0.00 sec)
取cn象_王的数据,居然把cn陶_陶的数据也取回来了。
这显然是不允许的。
......
根据Chaos Wang的PPT整理而成, 在此再次感谢Chaos Wang的此次TechTalk
基本概念
• 字符(Character)是指人类语言中最小的表义符号。例如'A'、'B'等;
• 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding)。例如,我们给字符'A'赋予数值0,给字符'B'赋予数值 ......
先创建一个数据库MyDB
CREATE DATABASE `mydb` ;
再创建一个简单的数据表
CREATE TABLE `MyDB`.`MyTable` (
`Name` VARCHAR( 20 ) NOT NULL ,
`Age` INT NOT NULL
) ENGINE = MYISAM
插入一些数据
INSERT INTO `mydb`.`mytable` (
`Name` ,
`Age`
)
VALUES (
'Jim', '15'
), (
'Amy', '16'
), (
'Jack' ......
不知道是不是驱动加载有问题,在MyEclipse中写了简单的数据库测试程序找不到驱动类,希望大虾能给予帮助,谢了。
严重: Servlet.service() for servlet jsp threw exception
java.lang.ClassNotFoundException: org.aspectj.lang.Signature
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClas ......