用SELECT*FROM X WHERE Y替换查询不是NULL



这个查询试图实现什么

SELECT * FROM X WHERE (X.Y in (select Y from X))

据我估计,它给我带来的结果与相同

SELECT * FROM X WHERE Y is not NULL

第一个查询还有其他内容吗?对于大型数据集,第一个查询实际上非常慢,因此我想知道是否可以用第二个查询替换它。

您是对的,这两个查询是等价的。

目前尚不清楚为什么第一个查询是这样写的。也许它曾经看起来不一样。

事实上,您的第二个查询更好,因为它更容易阅读和理解(甚至像您所说的那样更快(。

您的第二个查询比第一个更完美

因为在第一个查询中,如果Y列包含null值,您可能会得到异常(null(结果,但如果Y列中包含null值,您在第二个查询中不会得到异常结果。

因此,根据表的值,两个查询将以两种不同的方式进行

最新更新