我正在开展项目,我需要在我的数据库中显示记录设备需要具有相同的状态和阶段: 例如,这是我的表:
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
但它不是我需要的
答案 0 :(得分:3)
您没有正式阐明这一点,但听起来您想要返回其记录所有匹配StatusID
和StageID
的所有设备组。这与下面的查询密切相关,该查询聚合设备组并执行此检查。
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;