求SQL语句

jerry 2005-03-12 09:26:13
A表和B表。
都有UID字段,是关键字。
A表有的B表不一定有。
如果A表也没有,则说明记录不存在。
如果A表有而B表没有,则应向B表添加一行。
B表除UID外,其它字段都有默认值。
B表有许多,名字不固定,根据不同的情况给出不同的表名,也可以通过查询C表得出。
要求返回UID,以及A表,B表的其它所有字段的值。

好象有点复杂,不知道能不能通过一条SQL语句来实现。
...全文
188 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerry 2005-03-15
  • 打赏
  • 举报
回复
up
jerry 2005-03-13
  • 打赏
  • 举报
回复
是这样的,A表我指的是用户数据表,B表是一系列的游戏数据表. 每个表对应不同的游戏. 我感觉这样设计还是合理的,因为并不是所有的用户会去玩所有的游戏.只有玩过该游戏的用户才有必要记录数据.
另,游戏也是会动态增加的,放一张表里不大可能吧.
charkie 2005-03-13
  • 打赏
  • 举报
回复
我觉得你这样的数据库设计很不合理,不符合1NF的要求。建议多建几个表,分别存储不同的字段,通过主键和外键连接起来,消除数据冗余。
jerry 2005-03-13
  • 打赏
  • 举报
回复
up..
jerry 2005-03-12
  • 打赏
  • 举报
回复
看清楚了啊,B表是泛指,也就是说,B表名是通过变量给出的。但保证所给出的B表的结构都是固定的
然而,B表的表名也存在于另一表内: C表。C表通过一个ID号可以从字段TableName来得到B表的表名
askgwf2004 2005-03-12
  • 打赏
  • 举报
回复

insert into b select a.uid from a M where not exists (select 1 from b where uid=M.uid)

--下面不太明白!
B表有许多,名字不固定,根据不同的情况给出不同的表名,也可以通过查询C表得出。
要求返回UID,以及A表,B表的其它所有字段的值
631799 2005-03-12
  • 打赏
  • 举报
回复
--insert tableB
insert into B select * from A where not exists (select * from B where uid=A.uid)
--query
select a.*,b.* from a inner join b on a.uid=b.uid
vbman2003 2005-03-12
  • 打赏
  • 举报
回复
如果A表有而B表没有,则应向B表添加一行:
insert into b select * from a where uid not in (select uid from b)

余下的问题没看明白 :(


remote_peng 2005-03-12
  • 打赏
  • 举报
回复
----插入b表不存在的﹕
insert into b select a.uid from a left join b on a.uid=b.uid where b.uid is null
---查詢A,B所有字段的值。
select a.*,b.* from a inner join b on a.uid=b.uid


34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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