0

这是我得到的表:

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 的 userid 或 contactid 为 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)412,413,423

谢谢 !

4

3 回答 3

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)

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

于 2013-05-25T23:37:54.207 回答
3

因为 userid 或 contactid 必须为 7,所以您可以按该列的总和进行分组,这将是不同的:

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

SQL 小提琴演示

结果:

MAX(ID)
423
412
413
于 2013-05-25T23:38:21.237 回答
0

Try altering your query to SELECT MAX('id') - should do the trick See also: PHP MySQL max() function producing 5

于 2013-05-25T23:26:53.037 回答