首页 > 解决方案 > LEFT JOIN 但从右侧只取一行

问题描述

语境:

我有两张桌子:ks__dokumentks_pz。这是一对多的关系,其中来自 ks__dokument 的记录可能有多个从 ks_pz 分配的记录。

目标:

我想显示每一行,ks__dokument并且每一行ks__dokument必须只显示一次。

我尝试了什么:

这是我尝试过的查询:

SELECT DISTINCT ks_id, * FROM ks__dokument AS dok1 
LEFT JOIN ks_pz ON ks_id = kp_ksid

但它仍然显示重复。

编辑

表结构

ks__dokument 结构:

| ks_id | X | X | X | X | X | X |

ks_pz:

| kp_id | kp_ksid | X | X | X |

'X' 是不重要的列。kp_ksid 是 ks__dokument 的外键。

标签: sqlsql-server

解决方案


您可以尝试以下方法 - 将您的WHERE条件子句移至ON子句

SELECT DISTINCT ks_id, * FROM ks__dokument AS dok1 
LEFT JOIN ks_pz ON ks_id = kp_ksid
and ks_usuniety = 0 AND ks_data_otrzymania >= '2020-08-31' 
ORDER BY ks_rok, ks_nr ASC

推荐阅读