【发布时间】:2020-12-25 21:48:52
【问题描述】:
上下文:
我有两张桌子:ks__dokument 和 ks_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
但它仍然显示重复。
编辑
- 不需要 ORDER BY 和 WHERE。
- 我不需要 DISTINCT,这正是我尝试过的。
表格结构
ks__dokument 结构:
| ks_id | X | X | X | X | X | X |
ks_pz:
| kp_id | kp_ksid | X | X | X |
'X' 是不重要的列。 kp_ksid 是 ks__dokument 的外键。
【问题讨论】:
-
请记住,
SELECT DISTINCT适用于整个选定的行,而不仅仅是第一列。 -
你真的需要
DISTINCT吗?这意味着您的表中有确切重复的行,这可能是一个更大的问题。 -
我不需要那种独特的,这只是我尝试过的,
-
@Arkadiusz 。 . .限定查询中的列名,以便阅读问题的人了解这些列的来源。
-
如果我理解正确,那么一个
ks_document有0 到nks_pz。两列ks_id和kp_ksid来自这两个表。一个是ks_document的主键,另一个在ks_pz中,不可为空,并且对ks_document主键有外键约束。在这种情况下,您的查询会显示所有ks__dokument及其所有ks_pz。现在您的标题表明您只想在每个ks_document行加入一个ks_pz行。哪一个?请显示示例数据并解释是什么让您选择要选择的行。
标签: sql sql-server