一个表,三列MYSQL查询问题

时间:2010-06-22 03:45:27

标签: sql mysql

参考我之前的问题: One table, two column MYSQL query challenge

命令: “SELECT主机名,GROUP_CONCAT(DISTINCT名称)作为名称FROM comments GROUP BY hostname”

返回预期结果:

192.168.0.1 user1,user2

192.168.3.5 user3

同一个表“comments”也有一个“timestamp”字段。如何使用该IP包含每个用户的最新(最新)时间戳?

示例:

192.168.0.1 user1-1277146500,user2-1277250087

192.168.3.5 user3-1237150048

我尝试了一些命令的变体,但只能得到所有时间戳,而不是最新的时间戳......

也..如果可能的话,在显示它之前将纪元时间戳转换为更友好的东西会更好。

4 个答案:

答案 0 :(得分:4)

varchar已转换Max(timestamp)转换为名称,并在Group by子句中添加时间戳

SELECT hostname,
  GROUP_CONCAT(DISTINCT name, CAST(MAX('timestamp') AS VARCHAR) as name 
FROM comments GROUP BY hostname

认为它会起作用,但我没有测试过。

答案 1 :(得分:0)

MAX(`timestamp`)

答案 2 :(得分:0)

 SELECT hostname, GROUP_CONCAT(DISTINCT name) as name, max(TIMESTAMP_FIELD) as timestamp_name FROM comments GROUP BY hostname

答案 3 :(得分:0)

SELECT 
     hostname, 
     GROUP_CONCAT(CONCAT_WS("-", name, m_timestamp))
FROM
     (SELECT 
          hostname, 
          name,
          cast(max(timestamp) as char(24)) as m_timestamp 
     FROM 
          comments 
     GROUP BY 
          hostname,
          name) as A
GROUP BY 
     hostname

修改

根据OP的评论更新了列名到时间戳(是c_timestamp)