Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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子查询还是内部联接?_Sql_Sql Server - Fatal编程技术网

SQL子查询还是内部联接?

SQL子查询还是内部联接?,sql,sql-server,Sql,Sql Server,我正在构建一个新的web应用程序,并且已经对sql查询有了基本的了解,但是我被困在这个特定的查询中 这是我将使用此查询的两个表。第一个表中的“followind”指向第二个表的“id” dbo.T_FOLLOWING_GROUP -id -groupLookupID -followingID -order dbo.FOLLOWING -id -userID -followingID 我需要根据“userID”和“groupLookupID”的已知值获取dbo.FOLLOWING中的所有行 这

我正在构建一个新的web应用程序,并且已经对sql查询有了基本的了解,但是我被困在这个特定的查询中

这是我将使用此查询的两个表。第一个表中的“followind”指向第二个表的“id”

dbo.T_FOLLOWING_GROUP
-id
-groupLookupID
-followingID
-order

dbo.FOLLOWING
-id
-userID
-followingID
我需要根据“userID”和“groupLookupID”的已知值获取dbo.FOLLOWING中的所有行

这些信息是否足够让人发疯?我知道有很多方法

`SELECT * FROM dbo.FOLLOWING 
 WHERE (insert select subquery here)`

或者是否有某种类型的
内部连接
我需要使用?

内部连接

SELECT AnyTableName.AnyColumnName1, AnyTableName.AnyColumnName2, ..... --- out these two tables
    FROM dbo.T_FOLLOWING_GROUP INNER JOIN dbo.FOLLOWING
    ON dbo.T_FOLLOWING_GROUP.followingID = dbo.FOLLOWING.id
然后,您可以在最后添加WHERE子句以进一步过滤结果集

在查询中

SELECT Column1, Column2, Column3, ...........
FROM dbo.T_FOLLOWING_GROUP
WHERE followingID IN (
                        SELECT DISTINCT id FROM dbo.FOLLOWING
                      )

内部联接

SELECT AnyTableName.AnyColumnName1, AnyTableName.AnyColumnName2, ..... --- out these two tables
    FROM dbo.T_FOLLOWING_GROUP INNER JOIN dbo.FOLLOWING
    ON dbo.T_FOLLOWING_GROUP.followingID = dbo.FOLLOWING.id
然后,您可以在最后添加WHERE子句以进一步过滤结果集

在查询中

SELECT Column1, Column2, Column3, ...........
FROM dbo.T_FOLLOWING_GROUP
WHERE followingID IN (
                        SELECT DISTINCT id FROM dbo.FOLLOWING
                      )
要在一个查询中使用所有查询(使用联接),请尝试以下操作:

SELECT f.* 
FROM dbo.FOLLOWING f 
LEFT JOIN dbo.T_FOLLOWING_GROUP fg on (f.id=fg.followingID)
WHERE f.userID=xxx AND fg.groupLookupID=yyy
(使用已知值代替xxx和yyy)。

要在一个查询中实现所有查询(使用联接),请尝试以下操作:

SELECT f.* 
FROM dbo.FOLLOWING f 
LEFT JOIN dbo.T_FOLLOWING_GROUP fg on (f.id=fg.followingID)
WHERE f.userID=xxx AND fg.groupLookupID=yyy

(使用您已知的值代替xxx和yyy)。

您到底停留在哪一部分?这属于对sql的基本理解。我一直在研究如何将其转换为一个查询。就我目前所知,如果您“需要获取dbo.FOLLOWING中的所有行,那么根据我已知的“userID”和“groupLookupID”值,我将分为两个不同的查询。dbo.T_FOLLOWING_GROUP与此有什么关系?您的主题行提到了内部连接,您认为这意味着什么?还有,背勾是怎么回事?这是一个MySQL的东西,你用sql-server标记了你的问题。你到底停留在哪一部分?这属于对sql的基本理解。我一直在研究如何将其转换为一个查询。就我目前所知,如果您“需要获取dbo.FOLLOWING中的所有行,那么根据我已知的“userID”和“groupLookupID”值,我将分为两个不同的查询。dbo.T_FOLLOWING_GROUP与此有什么关系?您的主题行提到了内部连接,您认为这意味着什么?还有,背勾是怎么回事?这是一个MySQL问题,您用sql-server标记了您的问题。为什么建议使用外部联接?如果我们从下表中查找没有相应的下组行的特定行,该怎么办?这只是一个示例,作者必须处理这个问题(并根据自己的用例调整它),为什么建议使用外部联接?如果我们从下表中查找一个特定的行,而该行没有相应的下组行,该怎么办?这只是一个问题作者必须处理的示例(并根据自己的用例进行调整)