Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将第一列中的每一行与第二列中的所有行进行比较_Sql_Sql Server - Fatal编程技术网

Sql 将第一列中的每一行与第二列中的所有行进行比较

Sql 将第一列中的每一行与第二列中的所有行进行比较,sql,sql-server,Sql,Sql Server,我有一个有两列的表。我想将第一列中的每一行与第二列中的所有行进行比较。如果匹配,我需要在第3列中插入“是”,如果不匹配,我需要插入“否” First second A B C D E A X c 输出应该是 First second yesOrno A B yes C D yes E A NO X c NO 对同一表格使用EXISTS UPDATE

我有一个有两列的表。我想将第一列中的每一行与第二列中的所有行进行比较。如果匹配,我需要在第3列中插入“是”,如果不匹配,我需要插入“否”

First second
A      B
C      D
E      A
X      c
输出应该是

First second  yesOrno
A      B         yes
C      D         yes
E      A         NO
X      c         NO

对同一表格使用
EXISTS

UPDATE T1 SET
    ThirdColumn = CASE WHEN EXISTS (
        SELECT
            'a SecondColumn match exists'
        FROM
            YourTable AS T2
        WHERE 
            T1.FirstColumn = T2.SecondColumn) THEN 'Yes' ELSE 'No' END
FROM
    YourTable AS T1

您可以按如下方式通过自连接获得它

  select T1.First,T1.second,(case when T2.second is null then 'no' else 'yes' end) as yesOrno from T as T1 left join T as T2
    on T1.First=t2.second

检查sql FIDLE:

您可以这样做:

declare @t table (
    C1 char(1),
    C2 char(1)
)

insert  @t
values  ('A','B'),
        ('C','D'),
        ('E','A'),
        ('X','C')

select  t1.C1,t1.C2, case when t2.C2 is null then 'No' else 'Yes' end YesOrNo
from    @t t1 left join @t t2
        on t1.C1 = t2.C2

有许多不同的方法可以编写这个基本查询。

您好,欢迎使用SO。如果您已经为此编写了代码,但无法开始工作,那么您就来对了地方。只需将代码的相关部分添加到其中。您需要展示自己的努力,因为堆栈溢出不是“为我编写代码”服务。另外,请看。到目前为止,您对答案有几次随机猜测。它们看起来都很合理,但三者都有很大的不同。这是因为你的问题没有多大意义。“第一列的每一行”???这是什么意思?这是本书的哪一章的作业?你可能应该用老师现在介绍的任何技巧来解决这个问题,这样他就不会知道你作弊了。你能添加更多信息吗?我正要发布类似的信息,但是如果你只想每个结果一行,你需要t1.c1上的group by和MAX/pivot案例语句。我没有得到你的查询。我想比较第一列中的第一行和第二列。如果存在,我想在第三列中插入“是”,否则插入“否”。然后在第一列中插入第二行,所有行都在第二列中
declare @t table (
    C1 char(1),
    C2 char(1)
)

insert  @t
values  ('A','B'),
        ('C','D'),
        ('E','A'),
        ('X','C')

select  t1.C1,t1.C2, case when t2.C2 is null then 'No' else 'Yes' end YesOrNo
from    @t t1 left join @t t2
        on t1.C1 = t2.C2