MySQL 如何多次判定查询记录

我要用PHP和数据库弄一个自动检测软件最新版本以及显示软件更新log的东西,格式化输出方面用PHP来
我有这样一个数据表
表名:updatalog
id int(11) UNSIGNED AUTO_INCREMENT —— 这条记录在表中的ID
softid int(10) UNSIGNED —— 这条记录对应软件ID——我可能有多个软件
major int(10) UNSIGNED —— 主版本
minor int(10) UNSIGNED —— 次版本
revision int(10) UNSIGNED —— 修正版本
beta varchar(255) gbk_chinese_ci —— 有时是些特殊版本时显示这个文本
log text gbk_chinese_ci —— 更新log

因为我不一定是按照越新的月往后输入,所以不能简单地按照id来排序
不需要多说其他的了,我从另一个表获得软件ID,需要搜索此表中该软件的最新的记录
首先搜索主版本最大的记录,
如果记录有多条就判断记录中次版本最大的,
如果记录还有多条就判断次版本最大的记录中修正版本最大的(这里应该只剩下一条了)
我尝试如下命令就失败了 SELECT max(major) FROM `updatalog` WHERE (SELECT * FROM `updatalog` WHERE `softid` = 软件ID)
请问如何能做到?(命令中softid的值用“软件ID”代替,最后搜出来的结果需要包含该条记录所有字段数据)

SELECT revision FROM `updatalog`
where `softid` = 软件id
order by major,minor,revision desc
limit 1追问

我用
SELECT * FROM `updatalog`
where `softid` = 1
order by revision,minor.major desc
limit 1
搜出来的并非最新的一条
============================================
以你的为基础,我去网上搜了一下,发现如下命令是可行的,搜出来的就是我要的顺序
SELECT * FROM `updatalog` WHERE `softid` = 1 order by major desc ,minor desc ,revision desc
而我现在用的是1024个字符的一条嵌套命令……

追答

哦,对的,每个字段都要倒序,加desc。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-07
SELECT max(major) FROM `updatalog` WHERE `softid` = 软件ID group by major,minor order by major,minor desc
相似回答