full join 怎么不行啊???

江南野鹤 2012-11-06 02:14:10
select * from UT_PROGRAM where userid=4 有142条数据
select * from UT_PROGRAM where userid=50437有165条数据

以上两个结果中 ProgramID 相同的只有1条

其中 UT_PROGRAM 表有4个字段 [UserID],[ProgramID],[Weight] ,[Type]

select * from  UT_PROGRAM u1
full join (select * from UT_PROGRAM where userid=4 ) u2 on u2.ProgramID=u1.ProgramID

where u1.userid =50437


这样操作却只出165条记录 .

为什么呢 ???

...全文
375 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qmz2007 2012-11-06
  • 打赏
  • 举报
回复
你想要的写法应该是 SELECT * FROM ( SELECT * FROM UT_PROGRAM WHERE userid = 50437 ) u1 full JOIN ( SELECT * FROM UT_PROGRAM WHERE userid = 4 ) u2 ON u2.ProgramID = u1.ProgramID 结果应该是142+165-1条
快溜 2012-11-06
  • 打赏
  • 举报
回复
因为你加了u1.userid =50437
qmz2007 2012-11-06
  • 打赏
  • 举报
回复
说错了 理解错你的意思了 select * from UT_PROGRAM u1 full join (select * from UT_PROGRAM where userid=4 ) u2 on u2.ProgramID=u1.ProgramID 这句话结果是 UT_PROGRAM 所有数据 where u1.userid =50437 筛选出来是select * from UT_PROGRAM where userid=50437的数据
發糞塗牆 2012-11-06
  • 打赏
  • 举报
回复
用inner join
SELECT  *
FROM    ( SELECT    *
          FROM      UT_PROGRAM
          WHERE     userid = 50437
        ) u1
        INNER   JOIN ( SELECT   *
                       FROM     UT_PROGRAM
                       WHERE    userid = 4
                     ) u2 ON u2.ProgramID = u1.ProgramID
qmz2007 2012-11-06
  • 打赏
  • 举报
回复
full是全连 应该用内连把full去掉
开启时代 2012-11-06
  • 打赏
  • 举报
回复
试试,楼主写的有问题
select *
from (select * from  UT_PROGRAM u1 where userid =50437) as u1
full  join (select * from  UT_PROGRAM where userid=4 ) u2 on u2.ProgramID=u1.ProgramID  
dd_2012 2012-11-06
  • 打赏
  • 举报
回复
where u1.userid =50437 不等于 on u1.userid =50437
江南野鹤 2012-11-06
  • 打赏
  • 举报
回复
用full的话应该是142+165-1条记录啊,求大神指教

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧