我是sql server的新手,我正在加入两个表。问题是一个表说[TABLE1]只有一行,但另一个表说[TABLE2]可以有很多行。
我想创建一个Query,它可以从TABLE1中检索1行,从TABLE2中检索2个顶行。
注意:两个表都有1个公共列,所以我创建了Join。
我尝试使用TOP 2 - 但这没效果
select T1.Col1 , Top 2 T2.Col1, ....
from TABLE1 T1
inner join TABLE2 T2
ON T1.commonRow = T2.commonRow
以下是table1& amp;的结构。表2
TABLE 1 TABLE2
-----------------------------
DATA COMMENTS 1
COMMENTS 2
COMMENTS 3
COMMENTS 4
可以帮助一下!!
答案 0 :(得分:1)
TOP关键字需要在SELECT之后和列名之前。
请参阅SQL Server联机丛书> SELECT子句(Transact-SQL)>语法。
您不需要子查询。所以这应该有用。
SELECT TOP(2) T1.Col1 , T2.Col1, ....
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.commonRow = T2.commonRow;
请注意,目前的做法是在TOP之后使用括号。
通常你会指定一个ORDER BY子句,所以TOP很多很有意义。
请参阅SQL Server联机丛书> TOP(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)
答案 1 :(得分:0)
您可以尝试这样
select T1.Col1 ,T2.Col1, ....
from TABLE1 T1
inner join (SELECT TOP(2)* FROM TABLE2) T2
ON T1.commonRow = T2.commonRow