MySQL Усеченное двойное значение - PullRequest
0 голосов
/ 13 марта 2020

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

Когда я выполнить код ниже, я получаю предупреждение «Ошибка в запросе (1292): усечено неверное значение DOUBLE:».

INSERT INTO secondary_table (
 user_key,
 hostname,
 dateField,
 ipAddress,
 comment,
 hitCount)
SELECT primary_table.user_key,
 primary_table.hostname,
 primary_table.dateField,
 primary_table.ipAddress,
 'Failed SSH login',
 COUNT(primary_table.ipAddress) 
FROM primary_table

LEFT JOIN secondary_table
ON secondary_table.user_key = primary_table.user_key
AND secondary_table.hostname = primary_table.hostname
AND secondary_table.dateField = primary_table.dateField
AND secondary_table.ipAddress = primary_table.ipAddress
AND secondary_table.comment = primary_table.comment

WHERE primary_table.comment = 'Failed SSH login'
AND primary_table.dateField < (SELECT MAX(dateField) FROM primary_table WHERE ipAddress > 1)
AND secondary_table.hostname IS NULL

GROUP BY user_key, hostname, dateField, ipAddress, primary_table.comment;

Первичные и вторичные таблицы:

-- primary_table
id  int(11) Auto Increment   
user_key    varchar(255) NULL
dateField   date NULL    
hostname    varchar(255) NULL    
ipAddress   varchar(255) NULL    
comment varchar(255) NULL

-- secondary_table
id  int(11) Auto Increment   
user_key    varchar(255) NULL    
hostname    varchar(255) NULL    
dateField   date NULL    
ipAddress   varchar(255) NULL    
comment varchar(255) NULL    
hitCount    int(11) NULL

Когда я сам запускаю часть запроса SELECT, я получаю ожидаемые результаты.

Что Я ищу, чтобы вставить любые записи, которые еще не существуют во вторичной таблице, на основе полей user_key, hostname, date и ipaddress.

SELECT primary_table.user_key,
 primary_table.hostname,
 primary_table.dateField,
 primary_table.ipAddress,
 comment,
 COUNT(primary_table.ipAddress) 
FROM primary_table

WHERE primary_table.comment = 'Failed SSH login'
AND primary_table.dateField < (SELECT MAX(dateField) FROM primary_table WHERE ipAddress > 1)

GROUP BY user_key, hostname, dateField, ipAddress, primary_table.comment;
user_key       | hostname | logDate    | ipAddress   | comment          | COUNT(primary_table.ipAddress)
abcde1234567890| server01 | 23/02/2020 | 10.10.10.10 | Failed SSH login | 2480
abcde1234567890| server01 | 23/02/2020 | 10.10.10.11 | Failed SSH login | 2479
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...