Sql 避免从join获取重复的匹配项

Sql 避免从join获取重复的匹配项,sql,teradata,Sql,Teradata,我有一个简单连接的查询。 对于表_A中的每一行,都有几行与表_B中的行相匹配。我只想得到其中一行(不管是哪一行)。我该怎么做 SELECT a.id, b.something FROM table_A a LEFT JOIN table_B b ON a.Id = b.something 我使用的是teradata。如果您按下面的分组,每个a.id只能得到一行: SELECT a.id, max(b.something) FROM table_A a LEFT JOIN table_B

我有一个简单连接的查询。 对于表_A中的每一行,都有几行与表_B中的行相匹配。我只想得到其中一行(不管是哪一行)。我该怎么做

SELECT a.id, b.something
FROM table_A a
  LEFT JOIN table_B b ON a.Id = b.something

我使用的是teradata。

如果您按下面的
分组,每个a.id只能得到一行:

SELECT a.id, max(b.something)
FROM table_A a
  LEFT JOIN table_B b ON a.Id = b.something
group by a.id

假设您的结果在每一列中都显示完全相同的内容,您也可以简单地将DISTINCT添加到select子句中

SELECT DISTINCT a.id, b.something FROM table_A a LEFT JOIN table_B b ON a.Id = b.something

您是否尝试过样本

SELECT a.id, b.something
FROM table_A a
LEFT JOIN table_B b ON a.Id = b.something
GROUP BY a.id
SAMPLE 1 ;
加上

GROUP BY 1, 2

对于您的查询

如果b.某个内容不是SELECT的一部分怎么办?您的意思是什么?B表中没有什么列吗?或者根本就没有B桌?另外,select列表中的b.something是否与ON子句中的b.something相同?想象一下:“SEL a.id FROM a.id=b.something上的内部连接b”如果有多个匹配项,我仍然只想得到一行。这有意义吗?我认为更多关于表模式的信息会有所帮助。根据表的结构和它们之间的关系,我可以想出几种不同的方法来实现这一点。。根据您的“查询”
a.id
b.something
将是完全相同的值,那么为什么还要加入
表b
。。如果您提供更多的细节或实际的SQL,这将非常有用