Mysql 将表连接到自身以比较同一列的数据

Mysql 将表连接到自身以比较同一列的数据,mysql,Mysql,我有一个表格,列出了项目和项目在多个阶段的状态。例如,管道经过切割、焊接、喷漆。按照表格的设置方式,它将管道列出三次,在列阶段,它将分别进行切割、焊接和喷漆 我想比较一下这一列中的表格,看看这三个阶段之间是否存在任何不一致之处 因此,如果管道仍处于切割阶段,它将显示该特定行,但如果管道处于焊接阶段,它将显示该特定行 目前的数据是: Unique ID Job # Stage Due Date Status 120473 Job 12 Cu

我有一个表格,列出了项目和项目在多个阶段的状态。例如,管道经过切割、焊接、喷漆。按照表格的设置方式,它将管道列出三次,在列阶段,它将分别进行切割、焊接和喷漆

我想比较一下这一列中的表格,看看这三个阶段之间是否存在任何不一致之处

因此,如果管道仍处于切割阶段,它将显示该特定行,但如果管道处于焊接阶段,它将显示该特定行

目前的数据是:

Unique ID      Job #     Stage      Due Date     Status
120473         Job 12    Cutting    1/17/17      Not Complete
120473         Job 12    Welding    1/18/17      Not Complete
120473         Job 12    Painting   1/18/17      Not Complete
120475         Job 17    Cutting    1/26/17      Complete
120475         Job 17    Welding    1/27/17      Not Complete
120475         Job 17    Painting   1/28/17      Not Complete
预期的产出将是:

Unique ID      Job #     Stage     Due Date
120473         Job 12    Cutting   1/17/17
120475         Job 17    Welding   1/27/17

Unique ID 120475是在切割中完成的,所以它会显示焊接。

显然今天是周五,因为我想得太多了

以下解决了我的问题:

select a.jobdescription, a.category, a.sequence, a.lotnumber, a.duedate, a.dpm, a.ps, a.stage, a.completed

from qiw_powerbi a

where (a.stage = "approved by client" and a.completed = "not complete") or (a.stage = "released to shop" and a.completed = "not complete")

group by a.catkey
order by a.category

以下是我的理解:

您希望每个唯一的_id都有下一个不完整的阶段

解决此问题的一种方法是使用内部联接

这是原始问题的简化版本


您可以通过添加示例输入、预期输出和解决问题的尝试来改进问题。同意@1000111。请给我们更多的信息添加一些样本输入@El Tigst添加了一些。如果你需要更多,请告诉我。感谢您的关注。列名为Status varchar type吗?
SELECT 
t.*
FROM t 
INNER JOIN 
(
    SELECT 
     A.unique_id,
     MIN(COALESCE(B.id, A.id)) AS next_stage_id
    FROM t A 
    LEFT JOIN t B ON A.unique_id = B.unique_id AND A.id < B.id 
              AND A.status='Complete' AND B.status='Not Complete'
    GROUP BY A.unique_id
) AS alias
ON t.id = alias.next_stage_id;