首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定两个字段是否相等

问确定两个字段是否相等
EN

Stack Overflow用户
提问于 2014-08-02 01:34:11
回答 2查看 1.8K关注 0票数 4

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

这是我的桌子结构的表示法。

代码语言:javascript
复制
RecordId int
CommonId int
Approved bit

在下面的两个记录中,我希望得到一个0返回,表示批准的字段不相等。

代码语言:javascript
复制
RecordId = 1
CommonId = 5
Approved = 1

RecordId = 2
CommonId = 5
Approved = 0

在下面的两个记录中,我希望返回一个1,指示批准的字段是相等的。

代码语言:javascript
复制
RecordId = 3 
CommonId = 9
Approved = 1

RecordId = 4
CommonId = 9
Approved = 1

这是我尝试过的查询,但是我得到了两行,并且没有指示这两个字段是否相等。

代码语言:javascript
复制
SELECT A.Approved
FROM MyTable A
INNER JOIN MyTable B ON A.Approved = B.Approved
WHERE A.CommonId = 5

我试着用一个组来看看我是否能得到一个行,但这也不起作用。

代码语言:javascript
复制
SELECT Approved
FROM MyTable A
INNER JOIN MyTable B ON A.Approved = B.Approved
WHERE A.CommonId = 5
GROUP BY B.CommonId

有人能告诉我正确的查询来得到我想要的吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-02 02:01:11

也许group by会有帮助?

代码语言:javascript
复制
select commonId,
       (case when max(Approved) = min(Approved) then 1 else 0 end) as IsEqual
from MyTable A
group by commonId;

这个公式假设值不是NULL列中的approved (您的问题没有提到这是一种可能性)。

票数 2
EN

Stack Overflow用户

发布于 2014-08-02 02:12:34

如果我明白你想要的是什么

代码语言:javascript
复制
SELECT 
    CASE 
        WHEN (A.Approved = B.Approved) THEN 1
        ELSE 0
    END
FROM MyTable A,
MyTable B
WHERE A.commonId = B.commonId
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25090827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档