【发布时间】:2019-02-08 12:19:34
【问题描述】:
我在连接第二个表中的一行时遇到问题
声明:
SELECT ART.*, EAN.*
FROM ART,EAN
WHERE ART.ARTNR = ean.unit_artnr
AND ean.typ = 'LE4';
TABLE EAN 有时有 2 个条目,所以我得到了我的
ART.ARTNR
输出翻倍。
我想不出办法只包含 EAN 中的一行
我尝试使用 group by 但这并不能解决问题,因为我需要 * 选择
样本数据:https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=3f0a57795fdeb6745155a6e823643c40
现在如果我执行我的语句,它会显示 2 次 ART.ARTNR 1234556 和 2 次 23455,但这不应该是每个 ARTNR 应该显示一次的情况
【问题讨论】:
-
您可以使用分析函数 row_number() 标记第二个表中的行,然后您可以加入行号 = 1 的位置。
-
在选择中使用
distinct -
@MuhammadWaheed 这不起作用,因为 ART 中有多个条目,我需要所有条目,但如果我像我一样加入 EAN,它会显示一些 ART 条目加倍,因为 EAN 中有 2 个条目
-
你的示例数据与SQL不对应,ean.typ在哪里?
-
您可以使用
CROSS APPLY,前提是您的 Oracle 版本具有此功能。您使用的是哪个 Oracle 版本?如果有多个匹配项,您想要哪个 EAN 行?
标签: sql oracle join group-by inner-join