当它们处于相同的阶段和状态时,显示具有相同Id的记录

时间:2017-09-07 07:38:42

标签: mysql sql

我正在开展项目,我需要在我的数据库中显示记录设备需要具有相同的状态和阶段: 例如,这是我的表:

EquipmentID      StatusID      StageID
1                2              2
1                1              2
2                2              2
2                2              2

结果应该是这样的:

EquipmentID      StatusID      StageID
2                2              2
2                2              2

我试过这样做

SELECT  *
FROM    Table
WHERE   StageID  = 2
AND     StatusID = 2

但它不是我需要的

2 个答案:

答案 0 :(得分:3)

您没有正式阐明这一点,但听起来您想要返回其记录所有匹配StatusIDStageID的所有设备组。这与下面的查询密切相关,该查询聚合设备组并执行此检查。

SELECT t1.*
FROM yourTable t1
INNER JOIN
(
    SELECT EquipmentID
    FROM yourTable
    GROUP BY EquipmentID
    HAVING SUM(CASE WHEN StatusID <> StageID THEN 1 ELSE 0 END) = 0
) t2
    ON t1.EquipmentID = t2.EquipmentID
WHERE
    t1.StageID = 2 AND t1.StatusID = 2 

答案 1 :(得分:0)

如果你想选择相同的EquipmentID,StageID和StatusID,你可以在它们之间使用相同的比较。

SELECT  *
    FROM    Table
    WHERE   StageID  = StatusID AND EquipmentID = StatusID;