mysql数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据)

mysql数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据),第1张

你需要知道在mysql数据库中是没有行,这一概念的。所以说,你让下一行减去上一行这个本身就是不成立的。处理的办法是把数据输出之后,用程序比如PHP。等等进行处理输出。单独用sql是无法实现的。

select ano,asumamt-bamt

from table1 as a

,(

select no, sum(amt) as amt

from table2

group by no

) as b

where ano = bno

数据库对数据是按行为单位,对列进行查询、运算等等 *** 作进行投影的。

如果你想对同张表的两行数据对应相减,你应该让表自连接,连接条件就是你说的对应关系,然后连接后就变成一行,数值变为两列,就可以运算了

示例:

select acnt-bcnt

from my_table a,my_table b

where 对应关系;

UPDATE

A

SET

A数量 = A数量 - B退货数量

FROM

A JOIN B

ON (A物料编号 = B物料编号);

上面这种2表关联更新写法

对于 A 表 与 B 表, 是 1对1 的情况下, 是没有问题的。

对于 A 表与 B 表, 是 1对多的情况下, 就没有测试过了。

DECLARE @result INT

IF (需求量>库存量)

BEGIN

SET @result=需求量-库存量

SELECT @result

END

表结构? 测试数据?

按哪一列排序?

测试数据

CREATE TABLE temp (

year INT,

salary INT

);

INSERT INTO temp VALUES(2000, 1000);

INSERT INTO temp VALUES(2001, 2000);

INSERT INTO temp VALUES(2002, 3000);

INSERT INTO temp VALUES(2003, 4000);

预期要求结果:

year salary

2000 1000

2001 1000

2002 1000

2003 10000

SELECT

year,

salary - ISNULL((SELECT TOP 1 salary FROM temp t2 WHERE t2year < tempyear ORDER BY year DESC), 0) AS salary

FROM

temp;

go

year salary

----------- -----------

2000 1000

2001 1000

2002 1000

2003 1000

(4 行受影响)

现在的人怎么连问题都懒得描述清啊:(

你是做算术减法、还是集合减(去除另一表有的记录)?

1、前者用运算符号-,但要记录匹配;

2、后者用NOT

IN

来判定:

DELETE

FROM

TableA

WHERE

ID

NOT

IN

SELECT

Id

FROM

TableB

)

说清楚一点:是两个视图中的元组相减还是两个视图中连接后的数据结果相减?

一个关系减一个关系可以用谓词NOT

IN或条件

<>

ANY进行关系 *** 作运算。

两个关系中的数据相减可以连接后(相所要求的条件,比如是同一个人的工资和扣的养老金之类,连接条件就是同一个人的标识,可能是身份z号,职工号什么的)相减,这没有什么啊,两表连接后进行数据 *** 作就可以了!句中一般和一个表中数据的加减没有区别:

select

Agongzi-Byanglao

as

Result,

form

A,B

where

Azhigonghao

=

Bzhigonghao

以上就是关于mysql数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据)全部的内容,包括:mysql数据库中如何实现同一列的数据相减(即下一行数据减去上一行数据)、sql 两表相减语句、请教一个SQL语句的问题,如何进行两行数据对应相减等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9711497.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存