如果存在id重复项,则选择所有行,然后选择具有特定类型的那一行(2)

时间:2017-03-18 01:19:42

标签: mysql sql distinct amazon-redshift

我有一张桌子 Table

其中一些" job_id"(列" job_id")有重复项。我需要从该表中选择所有列。如果" job_id"列,然后选择具有类型的行(从列"键入")"待开始"。我也试着加入桌子,但它也没有用。

select  *
case x.job_id
    when count(*)>1 then x.type="Pending Starts"
    end as type
from X

2 个答案:

答案 0 :(得分:0)

使用两个查询的并集。人们发现所有不具有重复作业ID的行。另一个查找所有重复的作业ID,并返回type = 'PendingStarts'的行。

SELECT a.*
FROM X AS a
JOIN (SELECT job_id
      FROM X
      GROUP BY job_id
      HAVING COUNT(*) = 1) AS b
ON a.job_id = b.job_id

UNION ALL

SELECT a.*
FROM X AS a
JOIN X AS b ON a.job_id = b.job_id
WHERE a.type = 'PendingStarts'
AND b.type != 'Pending Starts'

我假设当有重复时,类型是不同的。

答案 1 :(得分:0)

你总是想要Pending Starts值,所以从那开始:

List

这不是您的问题所要求的,但它似乎是您可能想要的。