MSSQL 的语法JOIN ON 后面 能不能加一个自己查询定义的表
本帖最后由 dh2981 于 2013-09-17 17:32:47 编辑 如题:
举例
SELECT [表1].[ID],[表1].[NAME] FROM [表1] join (select [表2].[ID],[表2].[NAME] FROM [表2] WHERE 一些判断条件 ) AS [临表1] on [表1].[ID]=[临表1].[ID]
相当这样的!如果没有,那有什么别的方法不! mssql select 查询 语法 as
[解决办法]
可以这样写啊,你报错?
[解决办法]
当然可以,这是子查询啊,很多时候都需要这样用
[解决办法]
当然可以了,你不会自己试一下吗
[解决办法]
楼上都是专家,用的实例比较多。
若表的名字很长很烦可以给表起一个简单的别名:
SELECT A.[ID],A.[NAME] FROM [表1] AS A join (select B.[ID],B.[NAME] FROM [表2] AS B WHERE 一些判断条件 ) AS C on A.[ID]=C.[ID]
这样感觉写起来有时稍微能省点时间。
[解决办法]
可以的 把join 後面的表用(條件的臨時表)
[解决办法]
这样写是完全可以的。
[解决办法]
这样写是可以的,如果你经常用到子查询的话,就清楚了
[解决办法]
更正一下,有些小错误
--JOIN可以是临时表,也可以是派生表。例如:
SELECT * INTO #b FROM b WHERE id>100--创建临时表
SELECT *
FROM a INNER JOIN #b ON a.id=#b.id --连接临时表
---
---
---
---
SELECT *
FROM a
INNER JOIN (SELECT * FROM b WHERE id>100) AS b ON a.id=b.id --连接派生表
--如果是派生表,关键在于派生查询的表要自定义一个别名,即:AS
;with [临表1]
as
(
select [表2].[ID],[表2].[NAME]
FROM [表2]
WHERE 一些判断条件
)
SELECT [表1].[ID],[表1].[NAME]
FROM [表1]
join [临表1]
on [表1].[ID]=[临表1].[ID]