我有两个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选择最大值而不是从所有行中选择,但只能从预定义中选择,但我不知道该怎么做以及是否可能。
有人可以帮助我吗?
答案 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