我有两张桌子。两个表都包含一个可用于将它们连接在一起的ID。但是,表2可以有more than one row for the same ID
。表1将始终有一行。
例如,table 1
包含60,000行。当我使用table2
进行左内联接时,它返回~171 000行。
我想要完成的是从表2返回第一行,所以当我加入它们时,我不会创建重复的记录。
我不确定这是否是正确的方法,但这是我尝试过的:
SELECT I.*, a.Name from table 1 I
INNER JOIN (SELECT MIN (a.ID), a.NAME FROM table 2 group by a.ID) as a
on I.ID = a.ID
我收到以下错误:
'i'附近的语法不正确。
有关如何解决此问题的任何建议?或者以不同的方式得到结果?
答案 0 :(得分:3)
这样的事情将保证第二个表中每个id一行。
;WITH singleRows AS (
SELECT
*
, ROW_NUMBER() OVER (PARTITION BY id ORDER BY name) as rownum
FROM
table_2)
SELECT
*
FROM
table_1 t1
JOIN singleRows t2
ON t1.id = t2.id
AND t2.rownum = 1