请教个SQL两表查询的问题

king135 2010-05-07 11:48:36
我数据库中有两张表,表A中的一个字段ID跟表B中的字段UID关联,但是表A的ID是非空的,而表B的UID不是,所以表B中有的数据表A中就不一定会有,而我主要查的是表B,两表查询时如果用select a.*,b.* from a a,b b where a.id=b.uid这样查的话,表B中UID为空的就查不出来了,请教下要怎么弄才能把表B的都查出来
...全文
77 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sql_lover 2010-05-07
  • 打赏
  • 举报
回复

select A.UID,B.* from B left join A on isnull(B.UID,-1)=A.ID
king135 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chuifengde 的回复:]
SQL code
select b.*,a.* from b left join a on isnull(uid,-1)=a.id
[/Quote]

自己研究了下,发现你的方法可用,而且你比较快回复,分就结你吧
sql_lover 2010-05-07
  • 打赏
  • 举报
回复
select b.*, a.b from @b b left join @a a on a.a=b.a
king135 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chuifengde 的回复:]
SQL code
你要什么?
DECLARE @a table(a INT,b int)
INSERT @a SELECT NULL,1
INSERT @a SELECT 1,1
INSERT @a SELECT 2,1
DECLARE @b table(a INT,b int)
INSERT @b SELECT 1,1
INSERT @b SELECT 8,1

SELECT……
[/Quote]

谢谢,但我希望只用一句SQL语句就能搞定
chuifengde 2010-05-07
  • 打赏
  • 举报
回复
你要什么?
DECLARE @a table(a INT,b int)
INSERT @a SELECT NULL,1
INSERT @a SELECT 1,1
INSERT @a SELECT 2,1
DECLARE @b table(a INT,b int)
INSERT @b SELECT 1,1
INSERT @b SELECT 8,1

SELECT * FROM @a a LEFT JOIN @b b ON isnull(a.a,-1)=b.a
--result
/*
a b a b
----------- ----------- ----------- -----------
NULL 1 NULL NULL
1 1 1 1
2 1 NULL NULL
*/
king135 2010-05-07
  • 打赏
  • 举报
回复
感谢楼上两位,但是你们的语句好像写的不完整,查询不了
--小F-- 2010-05-07
  • 打赏
  • 举报
回复
select * from b left join a on isnull(uid,-1)=a.id
chuifengde 2010-05-07
  • 打赏
  • 举报
回复
select b.*,a.* from b left join a on isnull(uid,-1)=a.id

22,209

社区成员

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

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