Ric*_*ico 37 sql sql-server null join
我加入了
SELECT * FROM Y
INNER JOIN X ON ISNULL(X.QID, 0) = ISNULL(y.QID, 0)
Run Code Online (Sandbox Code Playgroud)
Isnull在像这样的加入使它变得缓慢.这就像有条件的加入.有什么工作可以解决这个问题吗?我有很多记录,其中QID是Null
任何人都有一个解决方案,不需要修改数据
Eva*_*oll 58
你有两个选择
INNER JOIN x
ON x.qid = y.qid OR (x.qid IS NULL AND y.qid IS NULL)
Run Code Online (Sandbox Code Playgroud)
或者更容易
INNER JOIN x
ON x.qid IS NOT DISTINCT FROM y.qid
Run Code Online (Sandbox Code Playgroud)
您是否已承诺使用Inner join语法?
如果没有,您可以使用此替代语法:
SELECT *
FROM Y,X
WHERE (X.QID=Y.QID) or (X.QUID is null and Y.QUID is null)
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您希望从 Y.QID 中包含空值,那么最快的方法是
SELECT * FROM Y
LEFT JOIN X ON y.QID = X.QID
注意:此解决方案仅适用于您需要左表中的空值,即 Y(在上述情况下)。
否则
INNER JOIN x ON x.qid IS NOT DISTINCT FROM y.qid
是正确的做法
本文对此问题进行了很好的讨论.您可以使用
SELECT *
FROM Y
INNER JOIN X ON EXISTS(SELECT X.QID
INTERSECT
SELECT y.QID);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92427 次 |
| 最近记录: |