如何从mysql获取最近七天的数据

zed5wv10  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(238)

实际上我有一个名为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
vulvrdjw

vulvrdjw1#

我无法运行您的查询,因为您没有提供数据库的完整表结构,但您至少有2项需要更正:第一项:
您有这个查询,但它不返回两个参数(除非您有多个最大值的行)

(SELECT max(count) FROM newscount ORDER BY id LIMIT 2)

与其这样,不如这样:

(SELECT count FROM newscount ORDER BY count DESC LIMIT 2)

第二种:如果您希望从where子句中的子查询中获得多于1行,那么您应该使用where子句 in 而不是 = 操作数

相关问题