sql中怎么才能实现两张表 数据自动匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中怎么才能实现两张表 数据自动匹配相关的知识,希望对你有一定的参考价值。

第一张表有ID但销售区域为空,第二张表是已知的ID和销售区域,需要把第二张表的销售区域自动匹配到第一张表中。大神们该如何搞。

参考技术A select * from 表1 a ,表2 b
where a.id=b.id
参考技术B 什么数据库啊?语法不一样的追问

sql2008R2

追答update t1 set t1.销售区域=t2.销售区域 from t1 inner join t2 on t1.id=t2.id

t1代表第一张表,t2代表第二张表

参考技术C 这个写一个两表关联的update语句就可以啦

两张表 在一张表中插入数据时要使用触发器也更新另一张 有错误

ALTER TRIGGER [dbo].[ifid]
ON [dbo].[光盘入库信息]
AFTER INSERT,DELETE,UPDATE
AS
DECLARE @a int,
@id char(10),
@名称 nvarchar(50),
@原价 money,
@库存量 int,
@进货数量 int
SET @id=(SELECT 光盘ID FROM INSERTED)
SET @名称=(SELECT 光盘名称 FROM INSERTED)
SET @原价 = (SELECT [原价(元)] FROM INSERTED)
SET @库存量 = (SELECT 库存量 FROM 光盘信息) + (SELECT 数量 FROM INSERTED)
SET @进货数量 = (SELECT 数量 FROM INSERTED)
BEGIN

IF ((SELECT count(*) FROM 光盘信息 WHERE 光盘ID=@id)<1)
BEGIN
PRINT '此书尚未拥有ID,系统已为其分配ID!'
INSERT INTO 光盘信息
VALUES(@id,@名称,@原价,@进货数量,0,0)
END
ELSE
BEGIN
PRINT '已成功入库'
UPDATE 光盘信息
SET 库存量 = @库存量
WHERE 光盘信息.光盘ID = (SELECT 光盘ID FROM INSERTED)
END
SET NOCOUNT ON;
END

错误
消息 512,级别 16,状态 1,过程 ifid,第 19 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
WHY WHY WHY

你表中的子查询返回的查询结果多于一行。
可能出错的地方有:
SET @id=(SELECT 光盘ID FROM INSERTED)
SET @名称=(SELECT 光盘名称 FROM INSERTED)
SET @原价 = (SELECT [原价(元)] FROM INSERTED)
SET @库存量 = (SELECT 库存量 FROM 光盘信息) + (SELECT 数量 FROM INSERTED)
SET @进货数量 = (SELECT 数量 FROM INSERTED)
UPDATE 光盘信息
SET 库存量 = @库存量
WHERE 光盘信息.光盘ID = (SELECT 光盘ID FROM INSERTED)

这些地方都是用了子查询,那最后一个来说“SELECT 光盘ID FROM INSERTED”查出多于一行的结果时,要将值赋给光盘ID,但是有多个值,数据库就不知道要给哪个值了。所以报错。

解决方法:前5个语句增加where条件,确保查询结果唯一
update语句改用in,不用=
这样写:
UPDATE 光盘信息
SET 库存量 = @库存量
WHERE 光盘信息.光盘ID in (SELECT 光盘ID FROM INSERTED)
参考技术A 你赋值的时候要确保返回值只有一个
如SET @id=(SELECT 光盘ID FROM INSERTED)
可能同时插入了多笔资料,你这个就有问题,你应该判断插入或更新资料的笔数并决定是否要用到循环来处理。追问

对噢 我还没想到同时插入多个数据。。。
我晕 那我应该怎么改啊。。。

追答

你可以判断inserted表的资料笔数,如果是一笔就不用循环,如果是多笔就可以循环或集合操作。

本回答被提问者采纳

以上是关于sql中怎么才能实现两张表 数据自动匹配的主要内容,如果未能解决你的问题,请参考以下文章

excel两张表怎么做关联

如何用sql将两张表的字段名和列值进行匹配?

如何实现两张图片的匹配?

小写数字自动转换成大写人民币金额两张表怎么在桌面找不同吗?

Excel表格如何进行跨两张表批量查找匹配数据

sql如何同时向两张表插入数据