SQL Server数据库多表关联如何更新?
现有两个表,表中第一个字段为主键。车票表:(车票号,总票数,已售票数,剩余票数)订单表:(订单号,车票号,预订数量),即cpb:(cph,zps,ysps,syps)dd...
现有两个表,表中第一个字段为主键。车票表:(车票号,总票数,已售票数,剩余票数)订单表:(订单号,车票号,预订数量),即cpb:(cph,zps,ysps,syps) ddb:(ddh,cph,ydsl),当订单表中的“预订数量(ydsl)”改变时,车票表中的“已售票数(ysps)”、“剩余票数(syps)”也要随之更改,这样的SQL语句怎么写?在线等待,非常感谢!
展开
4个回答
展开全部
一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新。而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。我们先来讨论根据其他表数据更新你要更新的表
一、MS SQL Server 多表关联更新
sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式 中引用要更新的表以外的其它数据。
一般形式:
update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE 逻辑表达式
例如:
UPDATE dbo.Table2
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA);
实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的
一、MS SQL Server 多表关联更新
sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式 中引用要更新的表以外的其它数据。
一般形式:
update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE 逻辑表达式
例如:
UPDATE dbo.Table2
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA);
实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的
展开全部
亲,这个不是写sql语句,是改数据库的更新规则
选择“数据库”菜单 然后“编辑参照完整性”打开参照完整性生成器,在“更新规则”选项卡中选择“级联”即可
选择“数据库”菜单 然后“编辑参照完整性”打开参照完整性生成器,在“更新规则”选项卡中选择“级联”即可
更多追问追答
追问
没找到你说的菜单选项呀
追答
可以等下吗?我现在在上课,回去给你找像
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select 车票号,sum(a.总票数) as 总票数
,sum(a.已售票数 + b.预订数量) as 已售票数
,sum(a.总票数 - a.已售票数 - b.预订数量) as 剩余票
from 车票表 a left join 订单表 b on a.车票号 = b.车票号
group by a.车票号
纯技术活,求大哥赏点分吧!
,sum(a.已售票数 + b.预订数量) as 已售票数
,sum(a.总票数 - a.已售票数 - b.预订数量) as 剩余票
from 车票表 a left join 订单表 b on a.车票号 = b.车票号
group by a.车票号
纯技术活,求大哥赏点分吧!
更多追问追答
追问
我想要两个表关联更新不产生新表,只更新原来的两个表中的数据。但你所给的方法生成了新表,原来的车票表中数据依然没变
追答
你用什么编程语言?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SQL Server语法:UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) |
view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT
| NULL } | @variable = expression | @variable = column = expression } [ ,...n ]
{ { [ FROM { < table_source > } [ ,...n ] ] [ WHERE < search_condition > ] } | [
WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } [
OPTION ( < query_hint > [ ,...n ] ) ]
SQL Server示例: update a set a.gqdltks=b.gqdltks,a.bztks=b.bztks from
landleveldata a,gdqlpj b where a.GEO_Code=b.lxqdm
view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT
| NULL } | @variable = expression | @variable = column = expression } [ ,...n ]
{ { [ FROM { < table_source > } [ ,...n ] ] [ WHERE < search_condition > ] } | [
WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } [
OPTION ( < query_hint > [ ,...n ] ) ]
SQL Server示例: update a set a.gqdltks=b.gqdltks,a.bztks=b.bztks from
landleveldata a,gdqlpj b where a.GEO_Code=b.lxqdm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询