首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

MSSQL 的语法JOIN ON 后头 能不能加一个自己查询定义的表

2013-09-24 
MSSQL的语法JOIN ON 后面 能不能加一个自己查询定义的表本帖最后由 dh2981 于 2013-09-17 17:32:47 编辑如

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

[解决办法]
在sql server 2005以后,也支持with表达式,如果下面都多出都需要用这个【临时表】,那么代码只需要在上面定义一次就可以了:

;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] 
      


[解决办法]
当然,你上面的写法是完全正确的,你的临时表,在sql server里一般叫做派生表,是一种非常正规的写法

热点排行