Sql server SQL Server-选择内部联接中的前2名
我是sql server新手,我正在连接两个表。问题是一个表说[TABLE1]只有一行,而另一个表说[TABLE2]可以有很多行 我想创建一个查询,可以从表1中检索1行,从表2中检索2行 注意:这两个表都有一个公共列,所以我创建了Join 我试着使用Top2,但没有成功Sql server SQL Server-选择内部联接中的前2名,sql-server,sql-server-2005,select,Sql Server,Sql Server 2005,Select,我是sql server新手,我正在连接两个表。问题是一个表说[TABLE1]只有一行,而另一个表说[TABLE2]可以有很多行 我想创建一个查询,可以从表1中检索1行,从表2中检索2行 注意:这两个表都有一个公共列,所以我创建了Join 我试着使用Top2,但没有成功 select T1.Col1 , Top 2 T2.Col1, .... from TABLE1 T1 inner join TABLE2 T2 ON T1.commonRow = T2.com
select T1.Col1 , Top 2 T2.Col1, ....
from TABLE1 T1
inner join TABLE2 T2
ON T1.commonRow = T2.commonRow
下面是表1和表2的结构
TABLE 1 TABLE2
-----------------------------
DATA COMMENTS 1
COMMENTS 2
COMMENTS 3
COMMENTS 4
有人能帮忙吗 你可以这样试试
select T1.Col1 ,T2.Col1, ....
from TABLE1 T1
inner join (SELECT TOP(2)* FROM TABLE2) T2
ON T1.commonRow = T2.commonRow
TOP关键字必须位于SELECT之后和列名之前 请参阅SQL Server联机丛书>选择子句(Transact-SQL)>语法 您不需要子查询。所以这应该行得通
SELECT TOP(2) T1.Col1 , T2.Col1, ....
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.commonRow = T2.commonRow;
请注意,当前的做法是在顶部后面使用括号
通常,您会指定一个ORDERBY子句,这样无论数量多少,顶部都是有意义的
请参阅SQL Server联机丛书>顶部(Transact-SQL)
例如,使用AdventureWorks示例数据库:
SELECT TOP(5) H.CustomerID, D.OrderQty
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON D.SalesOrderID = H.SalesOrderID
ORDER BY D.OrderQty DESC;
结果如下:
CustomerID OrderQty
----------- --------
29818 44
29580 41
29913 40
29818 40
29913 39
(5 row(s) affected)
当我使用上面的查询时,我没有得到任何结果。