我创建了以下查询,其中包括2个联接,并且工作正常:

SELECT a.name, b.tid
FROM table1 a INNER JOIN
     table2 b
     ON a.id = b.id
INNER JOIN (
  SELECT b2.id, b2.status,  MAX(b2.created_time) as max_time
  FROM oac.qualys_scan b2
  GROUP BY b2.id  ,  b2.qualys_type
  ) t on t.id = a.id
      AND  t.status=b.status
      AND t.max_time = b.created_time
WHERE b.status = 'FAIL';


输出如下:

id      tid     name
17695   19512   abc.com
17781   19628   abc1.com
17805   19732   abc2.com
17806   19703   abc3.com
17807   19704   abc4.com


我有另一个表table3具有以下值

id  tid     name                        details
842 19512   abc.com                     Details Description 1
843 19628   abc1.com                    Details Description 2


我想将上述查询与tid上的table3合并,以便获得以下输出

id      tid     name          details
17695   19512   abc.com       Details Description 1
17781   19628   abc1.com      Details Description 1


我正在使用以下查询,但它仅返回不正确的一行

SELECT a.name, b.tid
FROM table1 a INNER JOIN
     table2 b
     ON a.id = b.id
INNER JOIN (
  SELECT b2.id, b2.status,  MAX(b2.created_time) as max_time
  FROM oac.qualys_scan b2
  GROUP BY b2.id  ,  b2.qualys_type
  ) t on t.id = a.id
      AND  t.status=b.status
      AND t.max_time = b.created_time
INNER JOIN table3 T3 on b.tid = T3.tid
WHERE b.status = 'FAIL'

最佳答案

使您的查询成为子查询并将其加入表中

    WITH BASELINE AS
    (
    SELECT a.name AS name, b.tid AS tid
    FROM table1 a INNER JOIN
         table2 b
         ON a.id = b.id
    INNER JOIN (
      SELECT b2.id, b2.status,  MAX(b2.created_time) as max_time
      FROM oac.qualys_scan b2
      GROUP BY b2.id  ,  b2.qualys_type
      ) t on t.id = a.id
          AND  t.status=b.status
          AND t.max_time = b.created_time
    WHERE b.status = 'FAIL';
    )
    -------------------------------------------------------------------
    SELECT
     base.tid
     , base.name
     , t3.details

    FROM
     BASELINE base
    LEFT JOIN
     Table3 t3
    ON base.tid = t3.tid


不是最巧妙的解决方案,但它始终对我有用

关于mysql - MYSQL连接未带来正确的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49018152/

10-15 10:47