实际上,我有一个名称为posts的表和另一个名称为newscount的表,在posts表中有四个列id,title,details,postingDate 在newscount表中有三列,分别是id,postid,count, 在newscount表中,postid是posts表ID的id,我已经将数据保存在posts表中,而且我在newscount表中也有数据,例如-在posts表中我有
id title details postingDate
1,title1,details1,somedate1
2,title2,details2,somedate2
3,title3,details3,somedate3
在newscount表中,我有
id=1,postid=1,count=6
id=2,postid=2,count=5
id=3,postid=3,count=7
我想从帖子表中选择具有最大计数的最后两个数据,就像我选择的那样,它应该显示类似newscount.id = 3,posts.id = 3的结果,其最大计数为7并且newcount.id = 1 ,posts.id = 1及其详细信息 我已经尝试过了,但是它只显示了postid 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
答案 0 :(得分:0)
我无法运行您的查询,因为您没有提供数据库的完整表结构,但是您至少有两项可以使它们正确: 首先:
您有此查询,但它不返回两个参数(除非您有多个具有最大值的行)
HCRYPTKEY
使用以下代码代替它:
(SELECT max(count) FROM newscount ORDER BY id LIMIT 2)
第二个:如果您希望从where子句的子查询中获得1行以上,则应使用(SELECT count FROM newscount ORDER BY count DESC LIMIT 2)
而不是in
操作数