给定一个数据库有两个表X
和Y
,我有一个查询,应LEFT JOIN
在属性的两个表X.a1
和Y.b1
.我使用了以下查询:
SELECT X.a1, X.a2, Y.b1, Y.b2 FROM X LEFT JOIN Y ON (X.a1 = Y.b1)
Run Code Online (Sandbox Code Playgroud)
我认为即使Y
目前是一张空桌,这也足够好了.但是,查询中断,因为表Y
似乎是空的.有没有办法重新格式化这个查询,以便即使Y
是一个空表,LEFT JOIN
不会破坏?或者我只需要始终确保表中有一些数据Y
,即使它与表中的任何内容都不匹配X
(因此LEFT JOIN
).
小智 8
由于您没有发布您的实际SQL,我只是在这里做出假设.我的经验告诉我你可能有一个where子句导致SQL返回空集.
SELECT X.a1, X.a2, Y.b1, Y.b2 FROM X LEFT JOIN Y ON (X.a1 = Y.b1)
WHERE Y.b3 = 'something'
Run Code Online (Sandbox Code Playgroud)
上面的SQL将返回空结果集.您可能需要修改SQL成以下格式,通过调出有问题的where子句LEFT JOIN ON子句.
SELECT X.a1, X.a2, Y.b1, Y.b2 FROM X
LEFT JOIN Y ON (X.a1 = Y.b1 and Y.b3 = 'something')
Run Code Online (Sandbox Code Playgroud)
你的表名有点令人困惑.是X和Y,还是Xa和Yb?
如果是X和Y:
SELECT X.a1, X.a2, Y.a1, Y.b2 FROM X LEFT OUTER JOIN Y ON (X.a1 = Y.b1)
Run Code Online (Sandbox Code Playgroud)
应该带回所有X,Y.a1和Y.b2的空值,其中没有匹配的记录.
归档时间: |
|
查看次数: |
11199 次 |
最近记录: |