首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从mysql表中选择不同的记录

从mysql表中选择不同的记录
EN

Stack Overflow用户
提问于 2015-02-13 05:21:26
回答 4查看 362关注 0票数 0

我有表log,因为我有一个列Message,它存储日志信息。Message将包含一些事件ID和日志描述,因此我希望读取所有具有不同事件ID的不同消息。

我试过的

代码语言:javascript
复制
 select distinct message from log limit 100;

我得到了所有不同的消息,但是具有相同的事件ID

下一首

代码语言:javascript
复制
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;

在这里,在获得日志之后,我必须再次添加一行,用于获取下一个唯一的事件id,比如,如果我得到了23,并且希望得到其他的23,我必须添加message not like "%23%"才能得到23以外的消息,并且这个查询的大小会越来越大。

那么,如何编写一个查询来选择具有不同事件ID的不同消息呢?

编辑

代码语言:javascript
复制
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**

示例消息

代码语言:javascript
复制
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名境内流离失所者预防警报11-1-15

输出

代码语言:javascript
复制
1177|Malformed DNS Packet|12-2-15
609|IDP Prevention Alert|11-1-15
EN

回答 4

Stack Overflow用户

发布于 2015-02-13 05:28:30

代码语言:javascript
复制
 select * from log where group by message,eventID

此查询将根据唯一消息以及事件on返回日志。

票数 1
EN

Stack Overflow用户

发布于 2015-02-13 13:31:38

在Standard中,这将是:

代码语言:javascript
复制
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 ):

代码语言:javascript
复制
SUBSTRING_INDEX(message, '|', 1)
票数 1
EN

Stack Overflow用户

发布于 2015-02-13 05:41:41

代码语言:javascript
复制
SELECT DISTINCT id, message
FROM "yourTable" GROUP BY id

这应该与消息一起返回id。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28493007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档