SQL选择基于一列的最大值和另一列的特定ID

时间:2016-09-23 14:32:03

标签: mysql sql sqlite

我试图根据另一列的最大值和第三列的特定id返回一列的值,所有这些都在同一个表中。

我尝试执行以下sql,但它不起作用:

SELECT "value" 
FROM event_log 
   JOIN (SELECT MAX("time") AS max_time 
         FROM event_log WHERE "eid" = 6)

我想要的唯一价值是"价值"列基于同一个表的其他列的最大值和特定ID号。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您需要指定ON操作的JOIN子句:

SELECT "value" 
FROM event_log AS t1
JOIN (
   SELECT MAX("time") AS max_time 
   FROM event_log 
   WHERE "eid" = 6
) AS t2 ON t1."time" = t2.max_time
WHERE t1."eid" = 6

答案 1 :(得分:0)

SELECT "value" 
FROM event_log AS t1
JOIN (
   SELECT MAX("time") AS max_time, eid 
   FROM event_log 
   WHERE "eid" = 6
   Group By eid
) AS t2 ON t1."time" = t2.max_tim 
AND t1.eid = t2.eid

答案 2 :(得分:0)

  1. 您正在使用子查询,并尝试将其连接到现有表,但是,除非您想要完整连接(并且您需要通过在查询中包含短语Full Join来明确指定,如果& #39; s你想要什么),你需要为连接指定连接条件,而不需要。
  2. 您需要子查询的别名才能在外部查询的其余部分中使用它。
  3. 最后,您尝试从子查询中选择名为value的列。但是该子查询中没有名为value的列。 value表中的列event_log
  4. 吗?

    但我认为你根本不需要加入。试试这个:

    SELECT "value",
      (Select MAX("time")
       FROM event_log WHERE "eid" = 6) maxTime
    FROM event_log l