确定两个字段是否相等

时间:2014-08-02 01:34:11

标签: mysql

我试图确定我的表中一行中的一个字段(已批准)是否等于同一表中另一行中的“已批准”字段。每个CommonId总会只有两条记录。我需要标量返回值为1表示两个Approved字段相等或0表示两个Approved字段不相等。显然我不明白我需要什么样的查询。

以下是我的表结构的表示。

RecordId int
CommonId int
Approved bit

记录 在下面的两个记录中,我想返回一个0表示Approved字段不相等。

RecordId = 1
CommonId = 5
Approved = 1

RecordId = 2
CommonId = 5
Approved = 0

在接下来的两条记录中,我希望返回1表示已批准的字段相等。

RecordId = 3 
CommonId = 9
Approved = 1

RecordId = 4
CommonId = 9
Approved = 1

这是我尝试过的查询,但我得到两行,并不表示两个字段是否相等。

SELECT A.Approved
FROM MyTable A
INNER JOIN MyTable B ON A.Approved = B.Approved
WHERE A.CommonId = 5

我尝试使用GROUP BY来查看我是否只能获得一行,但这也不起作用。

SELECT Approved
FROM MyTable A
INNER JOIN MyTable B ON A.Approved = B.Approved
WHERE A.CommonId = 5
GROUP BY B.CommonId

有人能告诉我正确的查询以获得我想要的东西吗?谢谢。

2 个答案:

答案 0 :(得分:2)

也许group by会有帮助吗?

select commonId,
       (case when max(Approved) = min(Approved) then 1 else 0 end) as IsEqual
from MyTable A
group by commonId;

此公式假设NULL列中的值不是approved(您的问题并未将此视为可能)。

答案 1 :(得分:0)

如果我理解你正在寻找什么

SELECT 
    CASE 
        WHEN (A.Approved = B.Approved) THEN 1
        ELSE 0
    END
FROM MyTable A,
MyTable B
WHERE A.commonId = B.commonId