smr*_*mr5 0 sql-server sql-server-2012
我有两张桌子。两个表都包含一个可用于将它们连接在一起的 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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
“i”附近的语法不正确。
关于如何解决这个问题有什么建议吗?或者以不同的方式得到结果?
这样的事情将保证第二个表中的每个 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10710 次 |
| 最近记录: |