Запрос возврата пустого набора
Я вижу странную проблему с запросом MySQL, у меня есть эта таблица
+--------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------+-------+
| aid | varchar(50) | NO | PRI | NULL | |
| sid | int(10) unsigned | NO | PRI | NULL | |
| cid | int(10) unsigned | NO | PRI | NULL | |
| signature | int(10) unsigned | NO | | NULL | |
| sig_name | varchar(255) | YES | | NULL | |
| sig_class_id | int(10) unsigned | YES | | NULL | |
| sig_priority | int(10) unsigned | YES | | NULL | |
| timestamp | datetime | NO | | NULL | |
| ip_src | int(10) unsigned | YES | | NULL | |
| ip_dst | int(10) unsigned | YES | | NULL | |
| ip_proto | int(11) | YES | | NULL | |
| layer4_sport | int(10) unsigned | YES | | NULL | |
| layer4_dport | int(10) unsigned | YES | | NULL | |
| isp | varchar(16) | YES | | NULL | |
| ispdst | varchar(16) | YES | | NULL | |
+--------------+------------------+------+-----+---------+-------+
Когда я выполню
SELECT DISTINCT timestamp
, aid
, sig_name
, inet_ntoa(ip_src)
, inet_ntoa(ip_dst)
FROM acid_event
WHERE ip_src !=0
AND ip_dst !=0
AND 1=1
AND aid = '10.10.10.94'
AND ip_src = '3305661330'
GROUP BY aid
, ip_src
, ip_dst
, timestamp
, sig_name
, isp
ORDER BY timestamp DESC
LIMIT 0,25;
MySQL возвращает результаты, и все в порядке, НО, когда я изменяю свой запрос на
SELECT DISTINCT timestamp
, aid
, sig_name
, inet_ntoa(ip_src)
, inet_ntoa(ip_dst)
FROM acid_event
WHERE ip_src !=0
AND ip_dst !=0
AND 1=1
AND ip_src = '3305661330'
GROUP BY aid
, ip_src
, ip_dst
, timestamp
, sig_name
, isp
ORDER BY timestamp DESC
LIMIT 0,25;
MySQL повторно запускает пустой набор
1 ответ
В обоих запросах вы сравниваете целое число с varchar:
ip_src = '3305661330'
Но ip_src - это целое число (10) без знака. Так что попробуйте это:
ip_src = 3305661330