2015-02-13 3 views
0

У меня есть таблица log, так как у меня есть столбец Message, который хранит информацию журнала. Сообщение будет содержать некоторые идентификаторы событий и описание журналов , поэтому я хочу прочитать все отдельные сообщения с разными идентификаторами событий.Выбор отдельных записей из таблицы mysql

То, что я пытался

select distinct message from log limit 100; 

Я получаю все различные сообщения, но с тем же событием удостоверения личности

Следующая

select * from log where 
message not like "%1177%" and 
message not like "%609%" and 
message not like "%82%" and 
message not like "%1107%" and 
message not like "%23%" 
order by ID DESC limit 10; 

здесь после получения журнала я должен снова добавить строка для получения следующего уникального идентификатора события, как если бы я получил 23 и хочу получить другое, что я должен добавить message not like "%23%", чтобы получить сообщения, отличные от 23, и этот запрос будет размером gett больше.

Итак, как написать запрос, который будет выбирать разные сообщения с разными идентификаторами событий?

редактировать

Field    | Type    | Null | Key | Default | Extra    | 
+--------------------+------------------+------+-----+---------+----------------+ 
| ID     | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| FromHost   | varchar(60)  | YES |  | NULL |     | 
| Message   | text    | YES |  | NULL |    | 


**edit** 

сообщения образца

1177|Malformed DNS Packet|12-2-15 
1177|Malformed DNS Packet|11-2-15 
1177|Malformed DNS Packet|11-1-15 
609|IDP Prevention Alert|12-2-15 

609 | Бдительные Профилактика IDP | 11-1-15

выход

1177|Malformed DNS Packet|12-2-15 
609|IDP Prevention Alert|11-1-15 
+0

Какова ваша текущая схема таблицы? – Dai

+0

@ Дай, я добавил описание моего стола, пожалуйста, посмотри. – Ali786

+0

Я не понимаю вашего описания. Можете ли вы показать некоторые значения «сообщения» плюс ожидаемый результат и почему это результат? – dnoeth

ответ

1
select * from log where group by message,eventID 

Этот запрос вернет вам журналы, основанные на уникальных сообщениях наряду с Идентификаторами событий

+0

Идентификатор события - это не другой столбец Он войдет в сообщение – Ali786

+0

Если вы видите мой второй запрос здесь, я пишу его как «сообщение не нравится»% 23% »' – Ali786

+0

, так что 23,1177, 609 - это идентификаторы событий? как вы их определяете? есть ли стандартный размер, который определяет начало идентификаторов событий на основе индекса? –

0
SELECT DISTINCT id, message 
FROM "yourTable" GROUP BY id 

, которая должна возвращать идентификатор вместе с сообщением отчетливо.

+0

спасибо, но ID не является идентификатором события, который я ищу, это всего лишь первичный ключ. – Ali786

+0

Просто измените имя столбца на место event_id вместо id. –

+0

event_id не является столбцом, который он войдет в столбец сообщений в качестве его части. – Ali786

0

Вы можете достичь этого, используя MIN() или MAX() функции с момента до различной ID с уникальным message.

SELECT MIN(ID),message FROM log GROUP BY message 

или

SELECT MAX(ID),message FROM log GROUP BY message 
+0

Спасибо, но ID не является идентификатором события, который я ищу, это всего лишь первичный ключ. – Ali786

1

В стандартном SQL это будет:

SELECT 
    SUBSTRING(message FROM 1 FOR POSITION('|' IN message) -1) AS EventID 
    ,MAX(message) 
FROM tab 
GROUP BY 
    SUBSTRING(message FROM 1 FOR POSITION('|' IN message) -1) 

Если вам не нужно, чтобы показать EventId в вашем результате вы можете просто удалить его.

В MySQL SUBSTRING/POISITION можно заменить SUBSTRING_INDEX (и вы, вероятно, не нужны MAX, тоже):

SUBSTRING_INDEX(message, '|', 1) 
Смежные вопросы