首页 > 解决方案 > 仅匹配右表中的一条记录时如何左连接

问题描述

我想知道当只匹配右表中的一条记录时如何左连接。
例如,

表A

ID 价值
1 34
2 42
3 60

表B

ID 价值 表A_id
1 20 1
2 31 1
3 50 2

我想得到如下使用的结果left outer join

表A_id 表A_value 表B_值
1 34 无效的
2 42 50
3 60 无效的

第一行的 tableB_value 为空,因为tableA.id = tableB.tableA_id匹配多条记录。

如何解决?谢谢。

标签: mysqlsql

解决方案


您可以将其COUNT()用作分析函数来跟踪 atableA_id在 A 表中出现的次数:

SELECT a.id AS tableA_id, a.value AS tableA_value, b.value AS tableB_value
FROM tableA a
LEFT JOIN
(
    SELECT *, COUNT(*) OVER (PARTITION BY tableA_id) cnt
    FROM tableB
) b
    ON a.id = b.tableA_id AND b.cnt = 1
ORDER BY a.id;

下面演示链接的屏幕截图

演示


推荐阅读