实际上我有一个名为posts的表和另一个名为newscont的表,posts表中有四列id,title,details,postingdate,newscont表中有三列id,posted,count,newscont表中posted是posts表id的id,我在posts表中保存了数据,也在newscont表中保存了数据,例如,在posts表中
id title details postingDate
1,title1,details1,somedate1
2,title2,details2,somedate2
3,title3,details3,somedate3
在新闻统计表里我有
id=1,postid=1,count=6
id=2,postid=2,count=5
id=3,postid=3,count=7
我想从具有最大计数的posts表中选择最后两个数据,比如如果我选择了,那么它应该显示newscont.id=3这样的结果,posts.id=3具有最大7计数,newcount.id=1,posts.id=1以及我尝试过的它的详细信息,但它只显示postsid 3detials而不是最后两个
SELECT * FROM (SELECT newscount.postId, newscount.count from newscount WHERE newscount.count = (SELECT max(count) FROM newscount ORDER BY id LIMIT 2) ) tempcounts INNER JOIN posts ON posts.id = tempcounts.postId WHERE posts.isActive=1 AND posts.postingDate >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY AND posts.postingDate < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY ORDER BY posts.postingDate DESC limit 2
1条答案
按热度按时间vulvrdjw1#
我无法运行您的查询,因为您没有提供数据库的完整表结构,但您至少有2项需要更正:第一项:
您有这个查询,但它不返回两个参数(除非您有多个最大值的行)
与其这样,不如这样:
第二种:如果您希望从where子句中的子查询中获得多于1行,那么您应该使用where子句
in
而不是=
操作数