日期:2014-05-17  浏览次数:20679 次

求一个简单的SQL!!!

IF OBJECT_ID('tempdb..#a') IS NOT NULL DROP TABLE #a
CREATE TABLE #a(id INT PRIMARY KEY IDENTITY(1,1),aaa NVARCHAR(11))

INSERT INTO #a(aaa )
SELECT 'a' UNION ALL
SELECT 'b' UNION ALL
SELECT 'c' UNION ALL
SELECT 'd' 


IF OBJECT_ID('tempdb..#b') IS NOT NULL DROP TABLE #b
CREATE TABLE #b(id INT PRIMARY KEY IDENTITY(1,1),bbb NVARCHAR(11))
INSERT INTO #b(bbb )
SELECT 'A' UNION ALL
SELECT 'B' UNION ALL
SELECT 'C' 


SELECT * FROM #a
SELECT * FROM #b

--想要根据两表中,其中一个数据条数最多的表来做主表,然后关联查询,目的是想获取尽可能多的数据。
--例如:如果#a的条数大于#b就用 #a left join #b on #a.id=#b.id
--#a和#b两个表中的数据条数不确定,它们的数据条数可能随时改变


------解决方案--------------------
取尽可能多的数据,用 full join 就可以了。
------解决方案--------------------
用full join 吧,不用判断了

select id=case when isnull(a.id,'')='' then b.id else a.id end,aaa,bbb from #a a  full join #b b on a.id=b.id