根据B表更新A表字段有关问题
根据B表更新A表字段问题
小弟不才,今日碰到一个表更新问题,求大神指点,建立环境如下:
------解决方案--------------------
你这什么需求啊?直接把A表中满足A.ID=B.ID ADN A.SKU=B.SKU第一条记录的的A.QTY改为B.QTY,其他的都是0不就可以了
------解决方案--------------------
大概就这样,不过你的A表没有标识列,update的时候会有问题
小弟不才,今日碰到一个表更新问题,求大神指点,建立环境如下:
--USE TEST
--DROP TABLE A ;
--DROP TABLE B ;
CREATE TABLE A(ID VARCHAR(5),SKU VARCHAR(5),QTY NUMERIC);
CREATE TABLE B(ID VARCHAR(5),SKU VARCHAR(5),QTY NUMERIC);
INSERT INTO A
SELECT '1','abcde','1'
UNION ALL
SELECT '1','abcde','2'
UNION ALL
SELECT '1','abcde','3';
INSERT INTO B
SELECT '1','abcde','6';
SELECT * FROM A;
SELECT * FROM B;
--说明,需要根据B表QTY更新A表QTY,且更新后的SUM(A.QTY)=B.QTY
--条件是根据A.ID=B.ID ADN A.SKU=B.SKU
--举例
A表:
ID SKU QTY
1 ABCDE 1
1 ABCDE 2
1 ABCDE 3
B表:
1 ABCDE 5
结果:
A表:
ID SKU QTY
1 ABCDE 0
1 ABCDE 2
1 ABCDE 3
或者
A表:
ID SKU QTY
1 ABCDE 1
1 ABCDE 2
1 ABCDE 2
或者
A表:
ID SKU QTY
1 ABCDE 1
1 ABCDE 1
1 ABCDE 3
总之是SUM(A.QTY)=B.QTY,但是A中记录条数不能少!!!!
SQL
------解决方案--------------------
你这什么需求啊?直接把A表中满足A.ID=B.ID ADN A.SKU=B.SKU第一条记录的的A.QTY改为B.QTY,其他的都是0不就可以了
------解决方案--------------------
大概就这样,不过你的A表没有标识列,update的时候会有问题
--DROP TABLE A ;
--DROP TABLE B ;
--CREATE TABLE A(ID VARCHAR(5),SKU VARCHAR(5),QTY int);
--CREATE TABLE B(ID VARCHAR(5),SKU VARCHAR(5),QTY int);
--INSERT INTO A
--SELECT '1','abcde','1'
--UNION ALL
--SELECT '1','abcde','2'
--UNION ALL
--SELECT '1','abcde','3';
--INSERT INTO B