Можно ли реализовать этот сложный запрос с помощью операторов SQL SELECT?

Чтобы предотвратить массовую регистрацию (на сайте используется программа WordPress), я установил плагин «Зарегистрировать IP-адреса» для записи IP-адресов регистрации пользователей. Этот плагин добавляет дополнительные данные к данным нового пользователя wp_usermeta под ключом signup_ip.

enter image description here

Я мало знаю об операторе SQL SELECT, можно ли использовать оператор SQL SELECT, чтобы получить все зарегистрированные IP-адреса и отсортировать их по количеству появления IP-адресов? Например, запросить 10 наиболее зарегистрированных IP-адресов, чтобы я мог найти подозрительные IP-адреса и вовремя их заблокировать.

Это моя текущая попытка, и я не знаю, как сортировать по вхождениям IP. Любая помощь, заранее спасибо!

SELECT * 
FROM wp_usermeta 
WHERE meta_key = 'signup_ip' 
ORDER BY meta_value ASC 
LIMIT 0, 10;

Вы уверены, что используете Microsoft SQL Server? Если нет, удалите этот тег и укажите правильный движок и версию базы данных.

Tomalak 10.04.2022 11:26

@Tomalak Да, это из локальной тестовой среды Windows.

Lorraine1996 10.04.2022 11:39

Я не могу этого представить. LIMIT не поддерживается синтаксис в SQL Server. Если этот запрос вам что-то возвращает, то вы, вероятно, используете что-то вроде MySQL.

Tomalak 10.04.2022 11:41

@Tomalak WordPress обычно работает с MySQL. Это, в сочетании с синтаксисом MySQL LIMIT, явно подразумевает, что OP использует MySQL.

Tim Biegeleisen 10.04.2022 11:49
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
4
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете агрегировать по user_id, а затем использовать IP-адрес для сортировки.

SELECT ip, COUNT(*) AS cnt
FROM
(
    SELECT MAX(CASE WHEN meta_key = 'signup_ip' THEN meta_value END) AS ip
    FROM wp_usermeta
    GROUP BY user_id
) t
GROUP BY ip
ORDER BY cnt DESC
LIMIT 10;

Другие вопросы по теме