T-SQL检查记录丢失的原因

时间:2010-02-02 13:56:00

标签: tsql

如果您有一个非常复杂的SELECT语句并且由于连接而未包含某些记录,那么调试此问题并查找原因的最简单方法是什么?

4 个答案:

答案 0 :(得分:2)

将JOINS / INNER JOINS更改为OUTER JOINS并查找不应该出现的NULL。

答案 1 :(得分:0)

我不知道这是否会对你有所帮助,但是当我发现自己有一个复杂的选择时,我很难维护或调试,我会把它分解成单独的公用表表达式(CTE) 。我发现这使我的许多查询更容易理解和维护。

答案 2 :(得分:0)

您可以在ON子句中加入WHERE逻辑,如下所示:

WHERE 1=1
AND...
AND...

并且在您隔离意外行为之前,只注释掉许多条款。

答案 3 :(得分:0)

Binary Search stylee:

如果您有10个联接,请注释掉最后5个。

还有问题吗?注释掉仍然没有注释的最后2/3连接

还有问题吗?注释掉仍然没有注释的最后1/2连接

这样做直到你开始工作,然后问题将出在你注释掉的最后一个连接中。

是的,你可以一次做一个,但这通常会更快。

显然你必须注释掉select语句中没有使用的所有列,但我通常只在所有列中放入/ * * /,然后放一个*代替。

只看一下返回的结果数量。