Php ROWNUM不';不工作;试图获取SQL查询中特定行范围的信息
我有一段代码,它在SQL查询中计算行数,然后执行另一个查询以获取最后四行的信息。我使用了Php ROWNUM不';不工作;试图获取SQL查询中特定行范围的信息,php,sql,pdo,Php,Sql,Pdo,我有一段代码,它在SQL查询中计算行数,然后执行另一个查询以获取最后四行的信息。我使用了ROWNUM,但它不起作用 $newscount = $db->query(" SELECT * FROM news "); $counter = $newscount->rowCount(); $grabnewsmsg = $db->query(" SELECT * FROM news WHERE ROWNUM >= $
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
就是不起作用,尽管我在其他网站上读到了其他问题/答案等等。它返回一个错误列rownum不存在
我只想获取最后四行的信息($query->rowCount()-4
),但无法通过某个updateno
阈值进行选择。如果用户删除一行,则不能适当地使用a_I
列来确定行号
此外,我还尝试了以下方法:
$grabnewsmsg = $db->query("
SELECT *
FROM news
ORDER BY updateno DESC
LIMIT 0,4
");
虽然这给出了期望的结果,但我仍然不确定为什么
ROWNUM
不起作用。你需要理解AUTO_INC
的含义。它被称为唯一标识符,这是有原因的。“唯一”表示任何其他行都不应具有相同的标识符。
$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
");
然而,它与任何枚举都毫无关系。所以-
我有一个名为“updateno”的自动递增列,它对应于行数
这就是你做错的地方
事实上,你根本不需要这样一个领域。如果你想列举你的领域-做在飞行中。如果您想要一个标识符,请使用常规名称来表示此-“id”
而对于任何“rownum”特性,您都需要另一个mysql操作符,即LIMIT您使用的SQL的“味道”是什么?@Gidil,我使用的是PDO。您的问题就是inmafous“XY问题”的一个例子。你有一些任务要做,你设计了一些不寻常的工具来解决,然后问我们如何使用你无法使用的工具。当你不得不问如何解决最初的问题时,你使用的是哪种数据库管理系统
rownum
表示您正在使用Oracle,但LIMIT
表示您正在使用不同的东西。如果WHERE rownum>number
不起作用怎么办?它给我一个错误,说明列ROWNUM不存在。您希望此“ROWNUM”具有哪些特定行?这又是错误的。如果你继续使用你糟糕的方法,不要谢我。你仍然在混淆一些事情。请,请,请多加注意,不要太快下结论,对你来说是一个全新的领域。有一些常规的解决方案为数千名程序员提供了多年的服务。如果这对你不起作用,那就是你做错了。是的。这就是问题所在。一个在互联网上搜索如何做阑尾切除术的医生会吓坏任何人。但编程被认为是一种儿童游戏,任何人只要拨动一下互联网就可以学会。