在我最近的一个基于PHP (CodeIgniter)的项目中,一个MySQL表包含了将近30.000条记录(而且还会增加更多)。如果我将这些记录显示为列表,性能就会降低(MySQL会在短时间内检索所有这些记录,但是运行30.000次PHP循环是不可行的)。因此,我的计划是一次加载100个记录,并创建一个分页,以便用户可以选择一个页面号来加载指定数量的记录。
我可以使用以下查询轻松加载前100条记录:
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 100
但问题是:当我选择page=2, page=3, ...., page=n时。
我有一个包含n条记录的表
如何在不使用派生表的情况下从我的SQL表中检索第n条记录和第(n-1)条记录?
我曾尝试使用ROWID作为
select * from table where rowid in (select max(rowid) from table);
它给出了第n条记录,但我也想要第(n-1)条记录。除了使用max,derived table and pseudo columns之外,还有其他方法吗?
谢谢
我试图使用查询删除数据库中名为MySql 的表中的最后一条记录。
我尝试这样做的查询如下:
DELETE MAX(`id`) FROM `marks`;
表中有8列。我想删除最后一列而不指定id,如下所示:
DELETE FROM marks where id=8;
删除第8条记录后,我想删除第7条;在第6条之后,再删除第1条记录,而不手动指定id。
我正在从我的MySQL数据库表参与者中获取一个“参与者”列表&试图将结果填充到中:
<?php
$query = "SELECT actor_name FROM actors";
$result = mysql_query($query) or die("<h1>Error - the query could not be executed</h1>\n");
$num_rows = mysql_num_rows($result);
$row = mysql_fetch_array($result);
print(
我在MySQL里有一张桌子叫words。
一列称为word (实际单词),另一列称为专用。
我正在尝试执行一个查询--如果可能的话--应该这样做:
SELECT word FROM words WHERE special = 1 AT LEAST ONCE
这是一个类似于伪的查询,但我想要的是从我的words表中随机获取第n条记录,其中至少有一个单词的属性特殊设置为1。
这意味着,如果是这样的话,所有的第n条记录都允许为1,或者除一个以外的所有记录都可以具有特殊的=0,但至少必须有一个具有特殊的=1的记录。
我试过这样的东西:SELECT * FROM words HAVING COUNT(i
我知道如何从桌子上存取最后的N条记录,
SELECT * FROM table_name ORDER BY auto_incremented_id DESC LIMIT N;
有N个记录手段,表记录每天都在递增,每个记录都有唯一的串行ID从1到N,现在我想检索最后N10行的10条记录。
请考虑一下这个例子
Record 1
Record 2
Record 3
Record 4
Record 5
Record 6
Record N-M
Record N-2
Record N-1
Record N
如何检索N-2到N行?
一个网站所需的解决方案-1页面显示最
我考虑编写一个类似于tail -f的简单实用程序,以“跟踪”数据库中某些数字的进度:
create or replace function tail_f return varchar2_tab pipelined as
n number;
begin
loop
exit when ...
select count(*) into n from ... where ...;
pipe row(sysdate || ' n= ' || n);
dbms_lock.sleep(60);
end loop;
我有一个mysql表(Trips),上面有关于汽车的记录。我希望查询数据,并在每个carId中返回一项。但我无法。下面是获取50个记录的查询示例,其中还应该包含50个carId
SELECT *
FROM `trips`
WHERE ( carId = 147
OR carId = 62
OR carId = 59
OR carId = 42)
LIMIT 50
下面是一个返回8条记录的示例。如何返回限制8记录,但每辆车一个记录。这里的例子
表ABC中有n条记录。编写一个查询,从表中每5条记录选择一条记录。
例如,一个表中有30行。因此,查询应该从表中输出第5、10、15、20、25和30条记录。
我试过ROW_NUMBER OVER (ORDER BY id ),但得到了信息:-
来自SQL server IML的消息(msg 156,第15级,状态2):
在关键字OVER附近不正确的语法。
我在使用Sybase数据库。
我们有一个新的mysql数据库的狗救援。它目前有9条记录(或9条狗),id为1-9。YOu可以通过使用next或以前的按钮点击它们。当id在1-9之外(如"nothing“或0)时,当我们在记录1并单击prev时,它找不到什么东西(因为没有什么),或者当您在记录(或狗)9时,单击next另一个(或相同的错误),因为没有更多的记录。
脚本:(部分)
$dog_id = $_GET['id'];
include("conn.inc.php");
// GET THE DOGGY
$result = mysql_query("SELECT * FROM
我有下面的排名查询,每页限制25条记录,它显示前25条记录的第1-25条,但当我转到下一页时,排名保持在第1-25位,当它应该是26-50。
SELECT image, name, wins, losses, level, xp, wins AS W, losses AS L,
TRUNCATE(wins/IF(wins=0,1,wins+losses)*100,0) AS PCT,
@curRank := @curRank + 1 AS rank
FROM teams p
, (SELECT @curRank := 0) r
WHERE `console` = 3 AND `game`