假设有两个表test1
,test2
我使用连接从两个表中选择值。
我的要求是这样的:当我加入两个表时,如果test1
里面有数据但没有找到对应的数据test2
,那么查询应该抛出异常。
如何实现?
假设有两个表test1
,test2
我使用连接从两个表中选择值。
我的要求是这样的:当我加入两个表时,如果test1
里面有数据但没有找到对应的数据test2
,那么查询应该抛出异常。
如何实现?
你需要RAISEERROR
进行左连接并选择右侧为空的位置。如果计数 > 0 则抛出异常。
DECLARE @count INT
SELECT
@count = COUNT(*)
FROM
test1 t1
LEFT JOIN test2 t2
ON t1.t1_join_col = t2.t2_join_col
WHERE
t2.t2_join_col IS NULL -- find where we have test1 data but not test2 data
-- Check if I need to raise an error
IF @count <> 0
RAISERROR (N'<<%7.3s>>', -- Message text.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
如果您需要返回不匹配的结果,则添加以下 ELSE
ELSE
SELECT
... cols you want
FROM
test1 t1
LEFT JOIN test2 t2
ON t1.t1_join_col = t2.t2_join_col
您总是可以将结果放入临时表中并对其进行计数,然后如果您希望只执行一次查询,也可以将其返回。