使用SQL Self Join,我试图返回与where condition匹配的非匹配记录。
select RxNum,image from OeImage
where RxNum in ('100','200','300')
在表OeImage中,我的值为100,300。我没有200的价值。
如何使用自联接返回不可用的记录,而输入值则通过参数传递。
答案 0 :(得分:0)
如果您尝试搜索的不存在的值列表较小,则可以使用UNION ALL
,如下所示:
SELECT *
FROM (
SELECT '100' RxNum
UNION ALL
SELECT '200'
UNION ALL
SELECT '300'
) myList
WHERE NOT EXISTS (
SELECT *
FROM OeImage
WHERE RxNum = myList.RxNum
)
如果元素列表很长或在多个查询中需要,您可以使用Temp Table variable,如下所示:
DECLARE @myList TABLE (RxNum NVARCHAR(50))
INSERT INTO @myList
VALUES ('100')
,('200')
,('300')
SELECT *
FROM @myList
WHERE NOT EXISTS (
SELECT *
FROM OeImage
WHERE RxNum = @myList.RxNum
)