我有以下场景,我在表类别中有一个名为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开始,然后上升到最后一个数字。请记住,最后一个号码可以随着客户添加新类别而改变。这是可能的,希望我有道理。
答案 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)