带条件左外连接的 Mysql 子查询

发布于 2024-09-08 11:56:53 字数 606 浏览 4 评论 0原文

尝试在子查询 FROM 子句中使用外部查询的参数。

tbl1:
| id | val1 | str1 |
| 1  | 12   | sbc  |
| 2  | 22   | sds  |

tbl2:
| id | val1 | str1 |
| 1  | 1    | cp   |

尝试编写以下查询:

select * from
    tbl1 t, (select * from tbl2 where t.id = tbl2.id and tbl2.val1 = 1) tb12;

预期输出:

| id | val1 | str1 | id   | val1 | str1 |
| 1  | 12   | sbc  | 1    | 1    | cp   |
| 2  | 22   | sds  | null | null | null |

但它失败并出现错误:

/* SQL Error (1054): Unknown column 't.id' in 'where clause' */

我在这里做错了什么?

Trying to use parameter from external query in subquery FROM clause.

tbl1:
| id | val1 | str1 |
| 1  | 12   | sbc  |
| 2  | 22   | sds  |

tbl2:
| id | val1 | str1 |
| 1  | 1    | cp   |

Trying to write the following query:

select * from
    tbl1 t, (select * from tbl2 where t.id = tbl2.id and tbl2.val1 = 1) tb12;

Expected output:

| id | val1 | str1 | id   | val1 | str1 |
| 1  | 12   | sbc  | 1    | 1    | cp   |
| 2  | 22   | sds  | null | null | null |

Yet it fails with the error:

/* SQL Error (1054): Unknown column 't.id' in 'where clause' */

What am I doing wrong here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

故事未完 2024-09-15 11:56:53
SELECT  *
FROM    tbl1 t
LEFT JOIN
        tbl2 t2
ON      t2.id = t.id
        AND t2.val1 = 1
SELECT  *
FROM    tbl1 t
LEFT JOIN
        tbl2 t2
ON      t2.id = t.id
        AND t2.val1 = 1
还如梦归 2024-09-15 11:56:53

有什么理由不使用普通的旧左连接,如下所示:

select * from tbl1 t1 left join tbl2 t2 on t1.id = t2.id;

Is there any reason not to use plain old left join like this:

select * from tbl1 t1 left join tbl2 t2 on t1.id = t2.id;
甜柠檬 2024-09-15 11:56:53
 SELECT * tbl1 UNION select * from tbl2;

会产生相同的结果

 SELECT * tbl1 UNION select * from tbl2;

will produce the same result

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文