首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较同一个表(SQL Server)中的2行?

如何比较同一个表(SQL Server)中的2行?
EN

Stack Overflow用户
提问于 2009-02-04 11:13:13
回答 6查看 221.7K关注 0票数 23

我需要创建一个后台作业,该作业处理一个表,查找与具有不同状态的特定id匹配的行。它会将行数据存储在字符串中,以便将数据与具有匹配id的行进行比较。

我知道获取行数据的语法,但我以前从未尝试过比较同一个表中的两行。它是如何做到的?我需要使用变量来存储每个变量的数据吗?或者其他方式?

(使用SQL Server 2008)

EN

回答 6

Stack Overflow用户

发布于 2009-02-04 11:51:05

您可以根据需要多次将表连接到表本身,这称为self join

为表的每个实例分配一个别名(如下例所示),以区分它们。

代码语言:javascript
运行
复制
SELECT a.SelfJoinTableID
FROM   dbo.SelfJoinTable a
       INNER JOIN dbo.SelfJoinTable b
         ON a.SelfJoinTableID = b.SelfJoinTableID
       INNER JOIN dbo.SelfJoinTable c
         ON a.SelfJoinTableID = c.SelfJoinTableID
WHERE  a.Status = 'Status to filter a'
       AND b.Status = 'Status to filter b'
       AND c.Status = 'Status to filter c' 
票数 39
EN

Stack Overflow用户

发布于 2009-02-04 11:16:56

好了,两年后,终于到了改正语法的时候了:

代码语言:javascript
运行
复制
SELECT  t1.value, t2.value
FROM    MyTable t1
JOIN    MyTable t2
ON      t1.id = t2.id
WHERE   t1.id = @id
        AND t1.status = @status1
        AND t2.status = @status2
票数 14
EN

Stack Overflow用户

发布于 2009-02-04 11:27:39

有些人发现下面的替代语法更容易看出是怎么回事:

代码语言:javascript
运行
复制
select t1.value,t2.value
from MyTable t1
    inner join MyTable t2 on
        t1.id = t2.id
where t1.id = @id
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/510916

复制
相关文章

相似问题

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