MySql - 如何以设定的间隔选择一系列id

时间:2011-02-17 07:57:23

标签: php mysql

我有以下场景,我在表类别中有一个名为categoryid的表列,我需要选择表中categoryid为100及以上的所有行,间隔为100.

例如

SELECT * FROM categories WHERE categoryid IN(100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300,2400,2500,2600,2700,2800,2900,3000...

有没有比手动输入所有间隔更好的方法,它应该从100开始,然后上升到最后一个数字。请记住,最后一个号码可以随着客户添加新类别而改变。这是可能的,希望我有道理。

5 个答案:

答案 0 :(得分:12)

所以我使用的这个%运算符被称为模运算符,它将在除以数字后给出余数(在本例中为100)。如果余数为0,则它​​是100的倍数。我们还需要> = 100条件,因为零也通过模数条件。

SELECT * FROM categories WHERE categoryid >= 100 AND categoryid % 100 = 0;

答案 1 :(得分:2)

使用modulo(除法的余数)。

WHERE (MOD(categoryid, 100) = 0) AND (categoryid >= 100)

答案 2 :(得分:2)

使用用%

描述的Modulo运算符
SELECT * FROM categories 
WHERE categoryid >= 100 
AND categoryid % 100 = 0;

答案 3 :(得分:1)

只是提供不同的选项,您也可以使用LIKE

执行此操作
SELECT * FROM categories WHERE categoryid LIKE "%00";

答案 4 :(得分:0)

使用where子句中的函数:

SELECT xField FROM yTable WHERE({fn MOD(JourneyPatternPointId,100)} = 0)