任何人都可以给我一个下表的SQL查询

时间:2018-05-16 10:08:28

标签: mysql sql

我有一个名为eprism_reports的表,表格如下

enter image description here

当我使用查询时,在此表中

$query = $request->yourArrName

我得到以下Resultset enter image description here

在再次获得结果集后,我想删除重复的TAG_NAME,并且在该重复的TAG_NAME中应该出现唯一的TAG_NAME,并且RERUN应该是最大的

示例:在Resultset中我们有两个标记名重复名称mytag我想要一个与ReRUn唯一的标记名应该像往常一样MAX和剩余ResultSet。请帮我这个

预期结果应如下:

SELECT  * 
FROM eprism_dashboard.eprism_reports 
where CARRIER_NAME='QA_T_MOB'

4 个答案:

答案 0 :(得分:1)

SELECT TAG_NAME, MAX(RERUN) 
FROM eprism_dashboard.eprism_reports 
where CARRIER_NAME='QA_T_MOB'
GROUP BY TAG_NAME

答案 1 :(得分:1)

您可以尝试像这样的查询=> http://sqlfiddle.com/#!9/057184/1

为每个Max(rerun)选择tag group值,然后按joining on rerun and tag column

查询您的表格
SELECT t.*
FROM   eprism_reports t
JOIN   ( SELECT MAX(rerun) rerun
              , tag
         FROM   eprism_reports
         GROUP  BY tag ) t2
  ON( t.tag   = t2.tag
  AND t.rerun = t2.rerun ) 

答案 2 :(得分:1)

我只会将subquery相关方法一起使用:

select e.* 
from eprism_reports e
where CARRIER_NAME='QA_T_MOB' and
      id = (select id 
            from eprism_reports
            where TAG_NAME = e.TAG_NAME
            order by rerun DESC
            LIMIT 1);

您也可以将其表达为:

select e.* 
from eprism_reports e
where CARRIER_NAME='QA_T_MOB' and
      RERUN = (select max(RERUN) from eprism_reports where TAG_NAME = e.TAG_NAME);

答案 3 :(得分:0)

要获得每组最高的重新运行行,您可以进行自我加入

select a.* 
from eprism_reports a
left join eprism_reports b on a.CARRIER_NAME = b.CARRIER_NAME
                           and a.TAG_NAME = b.TAG_NAME 
                           and a.RERUN < b.RERUN
where a.CARRIER_NAME='QA_T_MOB' 
and b.CARRIER_NAME is null