SQL Max预定义行的值

时间:2011-10-25 23:34:15

标签: php mysql sql

我有两个MySQL表:MEMBERS和POSTS。我需要进行具有以下含义的查询:

选择POSTS表中包含一些(> 0)记录的所有USER => 从中选择在MEMBERS表中具有最大ADS值的USER。

我尝试了以下内容:

"SELECT * FROM posts WHERE user=(select user from members where ads=(select Max(ads) from members))'

但这有一个错误,当USER在MEMBERS中有Max值时,在POSTS表中没有记录 - SQL返回空结果。

我的猜测是我应该告诉MySQL选择最大值而不是从所有行中选择,但只能从预定义中选择,但我不知道该怎么做以及是否可能。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

这有用吗?

   select m.member_id, max(p.ads)
     from members m
     join posts p 
       on m.member_id = p.member_id
    group by m.member_id
    order by max(p.ads) desc
    limit 1

答案 1 :(得分:1)

SELECT m.*
FROM members AS m
WHERE EXISTS
      ( SELECT *
        FROM posts AS p 
        WHERE p.member_id = m.member_id
      )
ORDER BY ads DESC
LIMIT 1