我试图在同一查询中向左连接到同一表,但结果不正确,我用子查询解决了问题,这是错误的查询:
SELECT * FROM TableA ta
LEFT JOIN TableA Lta ON ta.key = Lta.key
AND ta.state IN('C')
AND Lta.state IN ('A','E')
WHERE Lta.key is null
Run Code Online (Sandbox Code Playgroud)
这就是我解决的方式
SELECT * FROM (
SELECT * FROM TableA ta
WHERE ta.state IN('C')
) AS T LEFT JOIN TableA Lta ON T.key = Lta.key
AND Lta.state in ('A','E')
WHERE Lta.key IS NULL
Run Code Online (Sandbox Code Playgroud)
如果您能给我一些与此主题相关的信息,我会对这些查询感到困惑,我将非常感谢您
谢谢
您的第一个查询非常接近。将“ ta.state”移至where子句。联接是两个表的关系方式,只是“ lta”别名的次要条件。
SELECT
*
FROM
TableA ta
LEFT JOIN TableA Lta
ON ta.key = Lta.key
AND Lta.state IN ('A','E')
WHERE
ta.state IN('C')
AND Lta.key is null
Run Code Online (Sandbox Code Playgroud)
因此,您的主要标准是ta.state是“ C”,但前提是lta的第二个(左联接)别名中的“ A”和“ E”实例不匹配
| 归档时间: |
|
| 查看次数: |
12592 次 |
| 最近记录: |