联接通常用于使用表中的公共因子从两个表中获取数据
是否可以使用连接语句使用表和另一个SQL语句的结果,如果它是什么语法
答案 0 :(得分:3)
当然,这称为派生表
如:
select a.column, b.column
from
table1 a
join (select statement) b
on b.column = a.column
请记住,它将完全运行派生表的选择,因此如果您只选择所需的内容,它会很有帮助。
编辑:我发现除非我加入一些汇总查询,否则我很少需要使用这种技术....所以我会仔细考虑你的设计。 例如,到目前为止,此线程中的大多数演示都不需要使用派生表。答案 1 :(得分:1)
这取决于其他语句是什么,但您可以使用的技术之一是常用表表达式 - 这可能在您的特定SQL平台上不可用。
对于SQL Server,如果另一个语句是存储过程,则可能必须将结果插入临时表并加入到该表中。
在SQL Server(和其他一些平台)中也可以使用表值函数,这些函数可以像视图或表一样加入。
答案 2 :(得分:1)
select *
from TableA a
inner join (select x from TableB) b
on a.x = b.x
答案 3 :(得分:1)
Select c.CustomerCode, c.CustomerName, sq.AccountBalance
From Customers c
Join (
Select CustomerCode, AccountBalance
From Balances
)sq on c.CustomerCode = sq.CustomerCode
答案 4 :(得分:1)
当然,举个例子:
SELECT *
FROM Employees E
INNER JOIN
(
SELECT EmployeeID, COUNT(EmployeeID) as ComplaintCount
FROM Complaints
GROUP BY EmployeeID
) C ON E.EmployeeID = C.EmployeeID
WHERE C.ComplaintCount > 3
答案 5 :(得分:0)
是的。但具体到底你想做什么?
可以使用子选择,视图或临时表来完成...更多信息可以帮助我们更好地回答这个问题,包括哪些SQL软件,以及您想要做的事情的示例。
答案 6 :(得分:0)
试试这个:
SELECT T1.col1, t2.col2 FROM Table1 t1 INNER JOIN
(SELECT col1, col2, col3 FROM Table 2) t2 ON t1.col1 = t2.col1