SQL子查询还是内部联接?
我正在构建一个新的web应用程序,并且已经对sql查询有了基本的了解,但是我被困在这个特定的查询中 这是我将使用此查询的两个表。第一个表中的“followind”指向第二个表的“id”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中的所有行 这
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标记了您的问题。为什么建议使用外部联接?如果我们从下表中查找没有相应的下组行的特定行,该怎么办?这只是一个示例,作者必须处理这个问题(并根据自己的用例调整它),为什么建议使用外部联接?如果我们从下表中查找一个特定的行,而该行没有相应的下组行,该怎么办?这只是一个问题作者必须处理的示例(并根据自己的用例进行调整)