假定您知道如何为行提供行号(例如,SQL Server中的ROW_NUMBER()),则可以创建一个查找(匹配)表并将其联接。参见以下说明:
查找表:
RowNum Value1 A2 B3 C
您的SourceTable源表(假设您已经向其中添加了RowNum,以防万一,请为其引入子查询(对于SQL Server
2005或更高版本,请引入CTE):
RowNum Name-----------1 A2 B3 C4 D
现在,您需要将LookupTable与SourceTable进行内部联接
LookupTable.RowNum = SourceTable.RowNumAND LookupTable.Name =SourceTable.Name。然后仅对RowNum的LookupTable进行此结果的左连接。如果
LookupTable.RowNum ISNULL最终结果存在,那么您知道至少一行上没有完全匹配项。
这是联接的代码:
SELECt T.*, LT2.RowNum AS Matched FROM LookupTable LT2LEFT JOIN ( SELECt ST.* FROM SourceTable ST INNER JOIN LookupTable LT ON LT.RowNum = ST.RowNum AND LT.Name = ST.Name) T ON LT2.RowNum = T.RowNum
以上查询的结果集将包含行,
Matched IS NULL如果行与LookupTable表中的条件不匹配。



