在多列mysql子查询中获取最高id

时间:2013-05-25 23:22:17

标签: php mysql sql database

这是我得到的表:

id   userid  contactid
401     7   1
403     7   1
405     3   7
407     1   7
408     7   1
409     7   3 
410     3   7
411     7   1 
412     7   3 
413     7   4 
420     1   7 
423     7   1

我想从中获取的是用户ID或contactid的最高ID,当它为7时

SELECT id from table WHERE userid=7 OR contactid=7 
AND id NOT IN 
(SELECT id from table WHERE userid=7 OR contactid=7 
ORDER BY id DESC LIMIT 1)

这就是我所做的,而且它不起作用。

在这个查询中我想收到3行,那些是:(id) 412413423

谢谢!

3 个答案:

答案 0 :(得分:3)

嗯,对Colandus的解释是有道理的:

select userid, contactid, max(id)
from t
where userid = 7
group by userid, contactid;

但是,如果我认为这些是没有排序的对,那么这个版本对我来说最有意义:

select least(userid, contactid), greatest(userid, contactid), max(id)
from t
where userid = 7 or contactid = 7
group by least(userid, contactid), greatest(userid, contactid)

当我以这种方式思考问题时,问题开始真正有意义。

答案 1 :(得分:3)

由于userid或contactid必须为7,因此您可以按该列的添加总数进行分组:

SELECT MAX(Id)
FROM yourtable
WHERE userid = 7 or contactid = 7
GROUP BY userid + contactid

SQL Fiddle Demo

结果:

MAX(ID)
423
412
413

答案 2 :(得分:0)

尝试将您的查询更改为SELECT MAX('id') - 应该这样做 另见:PHP MySQL max() function producing 5