Sql 如何从tableA中选择所有行,其中tableB中的两个相关列与tableA中的列相同
以下是表A和表B中的示例行:Sql 如何从tableA中选择所有行,其中tableB中的两个相关列与tableA中的列相同,sql,sql-server-2005,Sql,Sql Server 2005,以下是表A和表B中的示例行: col1 col2 col3 123 | asdf | ddd 我打算尝试使用CTE来检索这个值,但我一次只能处理一列 这是我到目前为止所拥有的,但现在我被难住了 ;with cte as ( SELECT A.col1 ,A.col2 FROM tableA A ) select col1, col2 from cte where col1, col2 n
col1 col2 col3
123 | asdf | ddd
我打算尝试使用CTE来检索这个值,但我一次只能处理一列
这是我到目前为止所拥有的,但现在我被难住了
;with cte as (
SELECT A.col1
,A.col2
FROM tableA A
)
select col1, col2 from cte where col1, col2
not in (select col1, col2 from FHU.dbo.HolidayCallers)
重申一下,我希望输出是顶部的原始样本行。根据您的问题,您可以使用EXISTS查找两个表中相关列所在的行
SELECT a.ConversationID, a.SendDateUtc
FROM tableA a
WHERE EXISTS(SELECT NULL
FROM FHU.HolidayCallers hc
WHERE a.ConversationID = hc.ConversationID
AND a.SendDateUtc = hc.SendDateUtc);
但是,根据您提供的示例代码,您似乎在寻找一个不存在的条件:
SELECT a.ConversationID, a.SendDateUtc
FROM tableA a
WHERE NOT EXISTS(SELECT NULL
FROM FHU.HolidayCallers hc
WHERE a.ConversationID = hc.ConversationID
AND a.SendDateUtc = hc.SendDateUtc);
根据您的问题,您可以使用EXISTS查找两个表中相关列所在的行
SELECT a.ConversationID, a.SendDateUtc
FROM tableA a
WHERE EXISTS(SELECT NULL
FROM FHU.HolidayCallers hc
WHERE a.ConversationID = hc.ConversationID
AND a.SendDateUtc = hc.SendDateUtc);
但是,根据您提供的示例代码,您似乎在寻找一个不存在的条件:
SELECT a.ConversationID, a.SendDateUtc
FROM tableA a
WHERE NOT EXISTS(SELECT NULL
FROM FHU.HolidayCallers hc
WHERE a.ConversationID = hc.ConversationID
AND a.SendDateUtc = hc.SendDateUtc);
您可以使用
内部联接
查找两个表中的记录:
SELECT a.ConversationID, a.SendDateUtc
FROM tableA AS a
INNER JOIN FHU.dbo.HolicayCallers AS hc ON a.ConversationId = hc.ConversationId
AND a.SendDateUtc = hc.SendDateUtc
您可以使用
内部联接
查找两个表中的记录:
SELECT a.ConversationID, a.SendDateUtc
FROM tableA AS a
INNER JOIN FHU.dbo.HolicayCallers AS hc ON a.ConversationId = hc.ConversationId
AND a.SendDateUtc = hc.SendDateUtc
@列文——我也怀疑他不在,但不管怎样,我认为这是他想要的(正如我在后期的回复中所说的)+1+1-添加了一条关于使用
EXISTS
而不是JOIN
的注释,你在我发布之前就添加了:)@Lieven-我也怀疑不在,但无论如何,我认为这是他想要的(正如我在后期的回复中发布的)+1+1-添加了一条关于使用EXISTS
而不是JOIN
的注释,您在我发布之前添加了它:)他想查找两个表中的记录,而LEFT JOIN
是进行此类检查的最不有效的方法。@JNK OP中的示例代码并不表示他们正在查找匹配的记录,而是查找不在两个表中的记录。如果请求是为了匹配记录,是否会存在
优于连接
?首先,我认为很清楚:这里有一个在表a和表B中都可以找到的示例行:
,然后在结尾处,我重申我希望输出是位于顶部的原始样本行。对于SS 2005+,EXISTS
短路和JOIN
将合并整个数据集,因此EXISTS
通常更快。@JNK感谢您为我澄清EXISTS vs JOIN问题。他想查找两个表中的记录,而LEFT JOIN
是进行此类检查的最不有效的方法。@JNK OP中的示例代码并不表示他们正在查找匹配的记录,而是查找不在两个表中的记录。如果请求是为了匹配记录,是否会存在
优于连接
?首先,我认为很清楚:这里有一个在表a和表B中都可以找到的示例行:
,然后在结尾处,我重申我希望输出是位于顶部的原始样本行。对于SS 2005+,EXISTS
短路和JOIN
将合并整个数据集,因此EXISTS
通常更快。@感谢JNK为我澄清了EXISTS vs JOIN问题。