我有一些代码可以计算SQL查询的行数,然后执行另一个查询来获取最后四行的信息。我使用了ROWNUM
,但它不起作用。
$newscount = $db->query("
SELECT *
FROM news
");
$counter = $newscount->rowCount();
$grabnewsmsg = $db->query("
SELECT *
FROM news
WHERE ROWNUM >= $counter-4 -- this particular part doesn't owrk
ORDER BY updateno DESC -- an A_I column
");
我评论了我遇到问题的具体方面。 A_I
部分很好,因为每行应该有一个唯一的标识符,但ROWNUM
除了SO上的其他问题/答案之外我在其他网站上阅读的内容不起作用。它返回错误column rownum does not exist
。
我想仅获取最后四行($query->rowCount()-4
)的信息,但我无法通过某个updateno
阈值进行选择。如果用户删除了某行,则无法正确使用A_I
列来确定行号。
另外,我尝试过以下方法:
$grabnewsmsg = $db->query("
SELECT *
FROM news
ORDER BY updateno DESC
LIMIT 0,4
");
虽然这会产生预期效果,但我仍然不确定为什么ROWNUM
不起作用。
答案 0 :(得分:1)
您需要了解AUTO_INC
内容的含义。它被称为唯一标识符,并且有一个原因。 “唯一”表示其他任何行都不应具有相同的标识符。
然而,它与任何枚举完全无关。所以 -
我有一个名为'updateno'的自动增量列,对应于行号。
这就是你做错了。
事实上,你根本不需要这样的领域。如果你想要枚举你的领域 - 在飞行中做。如果您需要标识符 - 请使用常规名称 - "id"
对于任何“rownum”功能,您需要另一个mysql运算符,即LIMIT