请问,通过
with TB1 as
(
),
TB2 AS
()
....
获得几个表,在这个表中有2个相同的字段:姓名,类型,
现在我想将这几个表合在一起,条件是这两个字段相同的合为一条.
with TB1 as
(
),
TB2 AS
()
....
获得几个表,在这个表中有2个相同的字段:姓名,类型,
现在我想将这几个表合在一起,条件是这两个字段相同的合为一条.
解决方案 »
- 如何从数组arraylist中查询数据?
- 求一个存储过程!
- SQL存储过程能否传一个table参数,如不能则能不能在两个存储过程之间共享这个table参数,急.....
- SQL模糊匹配
- 请教sql高手:通过一条sql语句,可以使查询结果按指定格式显示的问题
- SQL Sever启动不了?望大家帮忙!先谢了!在线等待中...
- !批量插入数据的重复问题
- 100分送上,求在ERWIN4.0中显示中文的问题
- ACCESS 2000O数据库与SQL SERVER2000不兼容问题
- 帮忙看下这个语句建立什么索引好~~
- 好像是升级了vs2008之后的sql2005的问题
- sqlserver 2008 r2 客户端的代码提示功能无效,怎么修复?
(
),
TB2 AS
()
....
SELECT *
FROM TB1 A
JOIN TB2 B
ON A.姓名=B.姓名 AND A.类型=B.类型
JOIN TB3 C
ON A.姓名=C.姓名 AND A.类型=C.类型
......
--就可以了,为什么要用with表达式?
with TB1 as
(
),
TB2 AS
()
....
SELECT *
FROM TB1 A
JOIN TB2 B --or FULL JOIN
ON A.姓名=B.姓名 AND A.类型=B.类型
JOIN TB3 C
ON A.姓名=C.姓名 AND A.类型=C.类型
......
(
),
TB2 AS
()
....
SELECT *
FROM TB1 A
JOIN TB2 B
ON A.姓名=B.姓名 AND A.类型=B.类型 ......
--#1.第一种合法
;WITH tb1 AS
(
SELECT 姓名 = 'a', 类型 = 'type1' UNION ALL
SELECT 姓名 = 'b', 类型 = 'type2'
),
tb2 AS
(
SELECT 姓名 = 'a', 类型 = 'type1'
)
SELECT *
FROM tb1 a
FULL JOIN tb2 b
ON a.姓名 = b.姓名 AND a.类型 = b.类型
--#2.第二种合法
SELECT
姓名 = COALESCE(a.姓名, b.姓名),
类型 = COALESCE(a.类型, b.类型)
FROM tb1 a
FULL JOIN tb2 b
ON a.姓名 = b.姓名 AND a.类型 = b.类型
(
SELECT 姓名 = 'a', 类型 = 'type1' UNION ALL
SELECT 姓名 = 'b', 类型 = 'type2'
),
tb2 AS
(
SELECT 姓名 = 'a', 类型 = 'type1'
)
SELECT *
FROM tb1 a
FULL JOIN tb2 b
ON a.姓名 = b.姓名 AND a.类型 = b.类型