Mysql返回特定的行号

时间:2009-12-31 11:01:00

标签: php mysql

我想查询数据库并返回特定的行号,例如1,10和25.

这是可能的还是我需要进行3次查询(或1次查询并遍历行,然后只输出我需要的那些)

使用php。

4 个答案:

答案 0 :(得分:4)

如果您需要特定的ID,您可以简单地使用......

SELECT XXX FROM table WHERE XXX_id IN (1, 10, 25) ORDER BY XXX

...让这些行回来。但是,如果您只是在任意行号之后,那么就我所知,您将不得不使用多个查询。 (或者使用PHP等来回取所需的行。)

出于兴趣,你想要实现什么目标?

答案 1 :(得分:2)

您需要使用limit clause:

第一行:

 select * from table limit 0, 1

第十排:

 select * from table limit 9, 1

第25行:

 select * from table limit 24, 1  

只需一次查询的解决方案:

如果您使用的是php,则可以使用:mysql_fetch_row

<?php
$result = mysql_query(" select * from table");
if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
$row = mysql_fetch_row($result);

echo $row[0]; // 1st
echo $row[9]; // 10th
    echo $row[24]; // 25th
?>

答案 2 :(得分:1)

如果你需要经常这样做(如果db很大),你还必须在某处存储行号(更具体地说是行号到数字映射)。

MyTable
-------
id
row_nr
...

并在每次删除条目时更新row_nr。

即。 - 如果删除id = 10的条目,则必须

UPDATE MyTable SET row_nr = row_nr - 1 WHERE id > 10

添加行时使用

INSERT INTO MyTable (whatever, row_nr)
VALUES ('thatever', (
SELECT MAX(MT2.row_nr)+1 FROM MyTable as MT2
))

-

然后你可以使用

SELECT XXX FROM MyTable WHERE row_nr IN (1, 10, 25)

选择时。

答案 3 :(得分:0)

这是我使用一个查询按rownumber选择多行的解决方案:

SELECT * FROM
  (SELECT  @row := @row + 1 as row, t.*
   FROM `default_red_albums` t, (SELECT @row := 0) r) AS view
WHERE `row` IN(4,8)

子查询返回一个带有额外&#34;行&#34;的表。柱。 mainquery只需要使用where语句进行过滤。

在14000行表上测试,花了0.0672秒。