Фильтрация результатов SQL - PullRequest
1 голос
/ 28 июня 2011

Я хотел бы показать отфильтрованный результат нескольким IP-адресам, которые продолжают очищать мой контент. Я заблокировал их с помощью .htaccess, и они меняют свой IP-адрес и продолжают это делать. Поэтому я подумал, что хочу создать мягкий блок, который не будет показывать им весь мой контент, и, надеюсь, они даже не заметят.

В моей таблице есть поле 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, поэтому я даже не знаю, что я ищу. Я надеюсь, что кто-то здесь может помочь мне! Спасибо:)

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Если вы хотите получить остаток от деления на 3, вы должны использовать оператор%.

SELECT * from mytable WHERE `category` = '1' and id % 3 = 1 ORDER BY `id` 
DESC LIMIT 0 , 10
0 голосов
/ 28 июня 2011

Как правило, столбец ID не предназначен для выполнения вычислений на нем.Он не представляет собой ничего, кроме уникального идентификатора записи (самое большее, его следует использовать для сортировки записей в хронологическом порядке), например, у вас могут быть GUID, и ваше приложение должно работать.

Если вы хотите сохранить IP-адреса, которые хотите заблокировать, в своей БД, рассмотрите возможность добавления еще одного столбца в вашу таблицу, назовите его status или что-то подобное, и сохраните в этом столбце статус для этого ip -этот статус может быть чистый, подозрительный, заблокированный и т. д. После этого ваш SELECT должен смотреть только после строк с заблокированным статусом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...