网站建设资讯

NEWS

网站建设资讯

sqlserver联表,SQL联表查询

SQLSERVER 多表关联如何更新?

update 表C

我们提供的服务有:网站制作、网站建设、微信公众号开发、网站优化、网站认证、南票ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的南票网站制作公司

set 表C.c3=表B.b3

from 表C

where 表C.c1=表A.a2 and 表C.c2=表B.b2

您说的还没搞明白,从语法上讲应该是这样的,不知道行不行,只做过2个表之间关联更新的,您这个要3个表,而且B表和 C表的关联有没有呢?

关联两个表有几种方法,比如说是sqlserver数据库的关联方式

关联两个表的方式包含内连接,外连接(左外连接,右外连接),交叉连接。

参考语句:

内连接

select * from student a

inner join stuMarks b

on a.stuid=b.stuid

外连接

select * from student a

inner join stuMarks b

on a.stuid=b.stuid

交叉连接

select * from student a

crossjoin stuMarks b

sqlserver多表联合查询

select c.discount

from a,b,c where a.hw_name=b.hw_name

and b.sort_id=c.sort_id

and a.hw_name='苹果'

sqlserver多表连接表连接问题

select * from A inner join B

on A.aa = B.aa

inner join c on A.aa = C.aa

where A.cc = '1'

union

select * from A inner join B

on A.aa = B.aa

inner join d on A.aa = d.aa

where A.cc = '2'

union

select * from A inner join B

on A.aa = B.aa

inner join e on A.aa = e.aa

where A.cc = '3'

sqlserver 触发器 多表联查

CREATE TRIGGER [dbo].[表1_UPDATE_表2] --这里是触发器名称,最好一目了然的

ON [dbo].[表1]

FOR UPDATE,INSERT,DELETE --更新,插入,删除时触发(根据实际情况,可以只用一个)

AS

BEGIN

--下面是你的语句,我没有修改,只是调整了排版和大小写

UPDATE 表2

SET name=0,age=''

FROM 表2 INNER JOIN

(

SELECT DISTINCT ABS(id) AS billid,sale_z.ele_sordercode

FROM 表3

WHERE ele_sordercode''

) 表3

ON 表2.tid=表3.id LEFT JOIN

(

SELECT MAX(id) AS id, referbillid

FROM 表1

WHERE referbillid0

GROUP BY referbillid

) 表1 ON 表3.id=表1.id

WHERE name=1 AND refer.id IS NULL

END

请问sqlserver中的两个表怎么进行关联

外键是用来实现“引用完整性”的,说白了就是一种约束,不能用来传值。

可以选择触发器或存储过程。

如果两个表字段相同可以用触发器:

CREATE TRIGGER trigger_AToB on A

INSTEAD OF INSERT

AS

BEGIN

INSERT INTO A(a,b,c) SELECT a,b,c FROM inserted

INSERT INTO B(a,b,c) SELECT a,b,c FROM inserted

END

GO

INSERT INTO a(a,b,c)VALUES('aaa','aaa','aaa')

在查询分析器里执行上面的语句后,向A表添加数据会同时向B表添加。触发器比较方便,缺点是,一旦B表被删除了,向A表添加数据会报错。

存储过程就比较自由了:

CREATE PROC proc_InsertAToB

@a VARCHAR(10),

@b VARCHAR(20),

@c VARCHAR(30)

as

INSERT INTO A(a,b,c)VALUES(@a,@b,@c)

INSERT INTO B(a,b,c)VALUES(@a,@b,@c)

表B的字段和表A不一样也没关系,需要的话,可以再根据需要向存储过程添加参数。

使用的时候不再用INSERT INTO了,用:

EXECUTE proc_InsertAToB 'aaa','aaa','aaa'就可以。


分享标题:sqlserver联表,SQL联表查询
当前路径:http://cdweb.net/article/dscgdco.html