我有一个数据库,可以在其中添加新闻。我需要显示命中> 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。我在哪里弄错了?
答案 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
子句应该可以解决您的问题。