运行WHERE子句后,仅显示每第2行

时间:2012-05-22 15:44:49

标签: php mysql

我试图在从我的数据库中选择一些东西之后只显示每一行。

我的选择如下:

SELECT * FROM table where partnerID = '1'

现在从该选择查询的结果我想只得到每第2行。

这可能吗?

4 个答案:

答案 0 :(得分:6)

$count = 0;
while($row = mysql_fetch_array($results)) {
    $count++;
    if($count % 2 == 1) continue;

    // What you want to do with the rows you don't want to skip here...
}

在旁注中,您可以使用相同的策略仅显示每第3行或每第4行,只需更改模数运算符旁边的数字

if($count % 3 != 0) continue; // Show only every third row
if($count % 4 != 0) continue; // Show only every fourth row

答案 1 :(得分:6)

SELECT * FROM (
    SELECT  @n := @n + 1 AS position,
            t.*
    FROM (SELECT @n:=0) counter,
         table t
    WHERE partnerID = 1)
AS query
WHERE MOD(position,2) = 0

答案 2 :(得分:5)

您可以通过以下方式执行此操作:

SELECT * FROM
(
    SELECT
      @I := @I + 1 AS rowNumber,
      tablename.*

    FROM
      tablename,
      (SELECT @I := 0) VT1

    WHERE partnerID = 2

    ORDER BY ID
) NumberedRows
WHERE MOD(rowNumber, 2)=0
;

答案 3 :(得分:0)

不确定这是否是正确的答案,但看起来您需要使用MOD函数(http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_mod

之类的东西
SELECT * FROM `table` WHERE id & 1;

会返回奇数行