给定一个数据库有两个表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 次 |
| 最近记录: |