2011-06-28 134 views
1

我想显示一个过滤结果给几个不断刮掉我的内容的ip。我用.htaccess阻止了他们,他们改变了他们的IP地址,并继续这样做。所以我想,我想创建一个软块,它不会显示我所有的内容,并希望他们不会注意到。过滤SQL结果

我的表中有一个AUTO_INCREMENT场

id | category | everything else 
1  1 
2  1 
3  4 
4  2 

我一直在尝试这样的事情。

SELECT * from mytable WHERE `category` = '1' having avg(id/3) = 1 ORDER BY `id` DESC LIMIT 0 , 10 

我已经搜索了,但我是sql的新手,所以我甚至不知道我在寻找什么。我希望这里有人能帮助我!谢谢:)

+0

究竟你想从SQL获得什么结果? – Nitesh

+0

为什么不只是提供一个静态页面? – Phil

+0

我想只能得到每个可以被3整除的ID,等于1,就像ID 1,4,7,10,13,16等。如果我给他们看一个静态页面,他们会知道某些事情已经结束,因为我通常会更新一天几次。 – steve

回答

2

行后,如果您想通过3得到的余数,你应该使用%运算符。

SELECT * from mytable WHERE `category` = '1' and id % 3 = 1 ORDER BY `id` 
DESC LIMIT 0 , 10 
+0

谢谢!完美的作品。再次感谢 :) – steve

0

通常,ID列不用于对其进行计算。它不代表记录的唯一标识符以外的任何内容(最多只能用于按时间顺序对记录进行排序) - 例如,您可能有GUID,并且您的应用程序应该可以工作。

如果要存储要在数据库中阻止的IP,请考虑在表中添加另一列,将其称为status或类似名称,并在该列中存储该ip的状态 - 此状态可能为干净,多疑,堵塞等之后,你SELECT应该只用阻塞状态

+0

谢谢!我喜欢你的建议,如果以上情况不可行,将会这样做。 – steve