一个sql问题的哈,mysql

dreamhack 发布于 2014/12/25 11:43
阅读 262
收藏 1

SELECT max(ID),Passwd,Ip FROM server where IsBackup='1';

这个语句,语法上不对啊,postgresql跑不通的,还没group by 或者子查询呢,但是mysql可以跑,

也得到我预期的目的(查找id最大的那行,且IsBackup='1'),myql内部做了什么啊?

加载中
1
JeffreyLin
JeffreyLin

这种写法 Passwd 和 Ip 不一定是最大 ID 对应的那行的,正确的写法可以这样:
select * from server where id=(select max(id) from server where isbackup='1')

dreamhack
dreamhack
回复 @JeffreyLin : 我明白啊,你这个理论上肯定不会一样的,这样说来,我还是写个子查询吧哈哈
JeffreyLin
JeffreyLin
回复 @dreamhack : 你还是没明白,简单一点吧:select max(id), id from ... 这个语句中,id不一定等于max(id)的
dreamhack
dreamhack
回复 @JeffreyLin : 回复 @JeffreyLin : 恩.明白你的意思,不过在我这个sql中,返回只有一行,而且MAX(ID),只group by了一次.你后面再加上MIN(ID)的话,它又group by了一次,已经和MAX(ID)的结果没关系了,这俩个都是在where之后独立的结果,互不影响
JeffreyLin
JeffreyLin
回复 @JeffreyLin : 例如 select max(id), min(id), id from ... 这个语句中,id不一定等于max(id),也不一定等于min(id) 的
JeffreyLin
JeffreyLin
回复 @dreamhack : 同一行这个理解是错的哦,是“分组内默认排序的第一行”
下一页
0
PYPlus
PYPlus
postgres和mysql的差别: postgres表名有大小写区分. postgres的schema和mysql的schema不一样.
0
聽雨人
聽雨人

...你应该根据错误信息去找解决方法,另外标题的mysql换成pg


0
mark35
mark35

mysql这货没啥规矩逻辑可言,比如

SELECT id, price FROM tbl GROUP BY id
这种语句都可以执行的呢


dreamhack
dreamhack
哈哈,你看懂了,难道是我没写明白?他们咋都乱来
返回顶部
顶部