表1
a b c
c01 b02 231
c02 b03 342
c03 b03 321表2
a b d
c01 b02 0.33
c03 b03 0.44如何得到结果集x y z p
c01 b02 231 0.33
c02 b03 342 null
c03 b03 321 0.44也就是表1字段 a,b 在表2中有数据,取表2 d字段,否则取空各位大大,帮帮忙,新人想的头晕
a b c
c01 b02 231
c02 b03 342
c03 b03 321表2
a b d
c01 b02 0.33
c03 b03 0.44如何得到结果集x y z p
c01 b02 231 0.33
c02 b03 342 null
c03 b03 321 0.44也就是表1字段 a,b 在表2中有数据,取表2 d字段,否则取空各位大大,帮帮忙,新人想的头晕
解决方案 »
- [--先来先得--]好像记得在SQL中把insert,delete触发器写到一起,然后通过一个属性来判断insert还是delete
- 我的SQL SERVER评估版过期了,听说替换一个文件就可以升级为正式版,请问有谁知道?
- 关于Distinct的问题!望指教
- sql问题
- 如何合并查询结果
- 存储过程 全角和半角符号的识别问题
- 怎样写sql语句,把从表中的记录与主表的记录合并在一起?
- 求:winxp下安装sql2005的最低要求
- db2里面没有datetime字段类型吗?
- 多关键词模糊查询问题
- sqlserver 2005 express或者2008express能导入excel2007文件吗
- 怎样将时间保存为“2011-1-1 10:14:12”格式
select a.a a.b a.c,b.d from 表1 a left join 表B b on a.a=b.a
(
a VARCHAR(100),
b VARCHAR(100),
c VARCHAR(100)
)
INSERT #A
select 'c01', 'b02', '231' union all
select 'c02', 'b03', '342' union all
select 'c03', 'b03', '321'
CREATE TABLE #B
(
a VARCHAR(100),
b VARCHAR(100),
d DECIMAL(10, 2)
)
INSERT #B
SELECT 'c01', 'b02', 0.33 UNION ALL
SELECT 'c03', 'b03', 0.44
--SQL
--#1
SELECT x=a.a, y=a.b, z=a.c, p=b.d FROM #A a LEFT JOIN #B b ON a.a = b.a AND a.b = b.b
--#2
SELECT x=a.a, y=a.b, z=a.c, p=b.d FROM #A a
OUTER APPLY
(SELECT d FROM #B WHERE a = a.a AND b = a.b) b
--#3
SELECT x=a.a, y=a.b, z=a.c,
p = (SELECT TOP(1) d FROM #B WHERE a = a.a AND b = a.b)
FROM #A a
from 表1 a left join 表2 b on a.a=b.a and a.b = b.b