Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server-选择内部联接中的前2名_Sql Server_Sql Server 2005_Select - Fatal编程技术网

Sql server SQL Server-选择内部联接中的前2名

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

我是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.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)

当我使用上面的查询时,我没有得到任何结果。