如果表为空并且Top 1000结果为内连接



我将三个表值参数传递给SP。这些参数都包含用于过滤查询的数据。我想将它们连接到一个表中,如下所示,但前提是在表值参数

中有数据
SELECT DISTINCT TOP (1000)
Person.col1,
Person.col2,
FROM dbo.Person INNER JOIN
@tbl1 t1 ON Person.col3 = t1.val INNER JOIN
@tbl2 t2 ON Person.col4 = t2.val INNER JOIN
@tbl3 t3 ON Person.col5 = t3.val

我知道我可以做一个左外连接,但我不想要NULL值的结果。top 1000是必要的,因为有很多数据,并且扫描整个表会导致性能问题

尝试使用coalesce来满足null检查

SELECT DISTINCT TOP (1000)
Person.col1,
Person.col2,
FROM dbo.Person INNER JOIN
@tbl1 t1 ON coalesce(Person.col3, '111') = t1.val INNER JOIN
@tbl2 t2 ON coalesce(Person.col4 , '111')= t2.val INNER JOIN
@tbl3 t3 ON coalesce(Person.col5, '111') = t3.val

最新更新