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

标签 mysql sql distinct amazon-redshift

我有一张 table 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

最佳答案

使用两个查询的并集。查找没有重复作业 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'

我假设当存在重复项时,类型是不同的。

关于mysql - 如果存在 id 重复项,则选择所有行,然后选择具有特定类型的(2 行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869392/

相关文章:

mysql - 具有自动提交事务的 Django save() 行为

php - Mysql 和 PHP 查询获取子表中的第一行

SQL Server : copy data from one column to another column?

java - 如何使用 Java 流查找不同对象的计数

MySQL - 随机时间的重复事件

javascript - 一个简单的 Nodejs MySQL 查询

sql - 长sql事务期间断电

sql - 使用 CASE WHEN 从单独的行获取单独的值

mongodb 计数并删除重复值

django - 按字段获取 Queryset 的不同值