跳过一些行时选择mysql

时间:2013-10-19 06:04:23

标签: mysql

是否有可以跳过某些行的mysql语法?

例如

id          value
1             a 
2             b
3             c
4             d
5             e
6             f
7             g
8             h
9             i

SELECT * FROM table HOP BY 2

所以结果将是

id          value
3             c
6             f
9             i

id          value
1             a 
4             d
7             g

请注意:我们不知道行的实际ID,因此我们不能使用像这样的WHERE子句

WHERE ID is a multiple of 3 or etc.

3 个答案:

答案 0 :(得分:1)

SELECT * FROM hoptable WHERE ID%3 =0 AND ID>1

答案 1 :(得分:1)

我没有意识到你可以在SQL查询中做数学。学到了新的东西。凉。这里的代码可以选择1,4和7。

$stmt = mysqli_prepare($connection, "SELECT * FROM users WHERE (ID+2)%3 = 0 AND ID>1");
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
while($row = mysqli_fetch_assoc($result)){
    echo $row['username'];
}

我不明白为什么如果id有差距就行不通,就像那个带普通话的男人一样?一个名字的符号说。

模数(%),如果您不知道,则给出除法问题给出的小数位数。所以3/3 = 1,没有小数,所以3%3 = 0,而4/3 = 1.333333 ...,所以4/3等于无穷大(不是真正编程,但足够接近)。

答案 2 :(得分:0)

SET @row_idx := 0;
SELECT *, (@row_idx := @row_idx + 1) AS idx
FROM table
HAVING idx % 3 = 0;

您可能希望包含ORDER BY子句,因此行索引实际上可能有意义。您不能依赖于按ID排序的结果而不指定它。