游客:  注册 | 登录 | 搜索 | 统计 | 帮助

 
标题: mysql update 問題 急
php18.com
版主
Rank: 7Rank: 7Rank: 7



UID 3
精华 0
积分 0
帖子 3
阅读权限 100
注册 2008-5-1
状态 离线
发表于 2008-7-14 10:38  资料  个人空间  短消息  加为好友 
mysql update 問題 急

表 vote_orders 是做排名用的
CREATE TABLE IF NOT EXISTS `vote_orders` (
  `oid` int(11) NOT NULL auto_increment,
  `aid` int(11) NOT NULL,
  `orders` int(11) NOT NULL default '0',
  `counts` int(11) NOT NULL default '0',
  PRIMARY KEY  (`oid`)
) ENGINE=MyISAM  DEFAULT CHARSET=gb2312 COLLATE=gb2312_bin AUTO_INCREMENT=4 ;

我想根據counts的大小進行排名 名次記錄在orders 字段
但是以下語句會報錯
UPDATE `vote_orders`
SET `orders` = ( SELECT count( * ) +1
FROM `vote_orders` b
WHERE b.counts > vote_orders
.counts )

請各位大俠幫忙修改sql語句

拜謝

顶部
coder
PHP新手入門
Rank: 1



UID 14
精华 0
积分 0
帖子 0
阅读权限 10
注册 2008-6-16
状态 离线
发表于 2008-7-15 05:23  资料  个人空间  短消息  加为好友 
可以用臨時表來解決,

但你這樣的應用是否本身就有問題,
排序 select * from vote_orders order by counts desc limit 10 就可以把最多的10條拿出來,而且已經按照從高到低排序的了。

顶部
windy
PHP新手入門
Rank: 1



UID 6
精华 0
积分 0
帖子 0
阅读权限 10
注册 2008-6-16
状态 离线
发表于 2008-7-15 14:46  资料  个人空间  短消息  加为好友 
不建議在數據庫裡記錄排序.

可以記錄數量,然後使用order by 排出來直接使用.或者order by 之後插入另外的表.

顶部
gavin
版主
Rank: 7Rank: 7Rank: 7



UID 2
精华 0
积分 0
帖子 0
阅读权限 100
注册 2008-4-27
状态 离线
发表于 2008-7-16 00:08  资料  个人空间  短消息  加为好友 
同意樓上~~!
做排名用數據庫裡數據非要進行排序,用的時候排序就可以,純屬個人意見!

顶部
 



当前时区 GMT+8, 现在时间是 2009-1-6 21:58

    Powered by Discuz! PHP學院特別版  © 2001-2008 Comsenz Inc.
Processed in 0.042645 second(s), 7 queries

清除 Cookies - 联系我们 - php教程学院 - Archiver - WAP