选择除最后一个ID以外的所有WHERE HITS> 1000

时间:2018-08-06 18:11:04

标签: mysql

我有一个数据库,可以在其中添加新闻。我需要显示命中> 1000而没有最后一个ID的新闻。

我已经尝试过了

SELECT * 
  FROM news 
 WHERE newsid != (SELECT MAX(newsid) FROM news) 
   AND hits > 1000 
 ORDER 
    BY newsid DESC

但是与此相同

SELECT * FROM `news` WHERE hits > 1000 ORDER By newsid DESC

它显示所有热门新闻>1000。我在哪里弄错了?

2 个答案:

答案 0 :(得分:0)

我认为您需要以下查询:

SELECT * 
FROM news 
WHERE newsid != (SELECT MAX(newsid) FROM news WHERE hits > 1000) 
  AND hits > 1000 
ORDER BY newsid DESC

第一个查询似乎没有考虑使用newsid进行过滤,但是如果max(newsid)已记录在hits <= 1000中,则不会被过滤掉

因此,您必须从与外部查询相同的行集中获取最大值,因此在子查询中使用WHERE子句。

答案 1 :(得分:0)

正在发生的事情是内部SELECT正在从整个表中抓取MAX(newsid),而不仅仅是点击次数超过1000的。在内部WHERE hits > 1000中添加SELECT子句应该可以解决您的问题。