mysql-sum来自不同行的值,其中不同列中的两个值匹配

pn9klfpd  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(337)

我的mysql技能是有限的,通常我只需要从一个表中选择一些条件所需的列。现在我需要的不止这些,我迷路了。
我要做的是添加一个项目的数量,其中两个不同的列匹配,并且所有数据都在同一个表中。
表格示例;

Item    Quantity    Col1    Col2
A       1           123     234
A       3           456     758
A       2           588     258
A       2           234     456

我最初的想法是写一个条件如下的查询;

WHERE Col1 = Col2

我不明白为什么我没有收到任何结果直到今天早上我才意识到,查询只是在检查同一行中的匹配项。我意识到我需要写一个子查询,现在我来了。子查询对我来说就像代数对很多人一样。一开始很顺利,后来我就迷失了方向。在我看来这应该很简单,但我觉得我把事情搞得太复杂了。
要执行此任务,查询需要什么样的外观?我想学这个,因为我知道我将来会需要它。

  • 编辑

我想通过查询实现的是,只要col1和col2之间存在匹配,就添加行的数量。

  • edit2不确定它是否暗示了我想做什么,但是。。
select Item, sum(Quantity)
from exampleTable
where col1 = 
(select col2
from exampleTable)
  • edit3-我问题的解决方案

在此之前,我想为我的问题描述不当而道歉。咨询了一位同事,解决我问题的方法很简单。

select a.Quantity +
(select b.Quantity
from exampleTable b
where Col2 = Col1)
from exampleTable a
yyhrrdl8

yyhrrdl81#

可能是这样的,子查询求和合并两列的数量,而外部查询求和并测试是否出现了不止一次的情况

Drop table if exists t;
create table t(Item varchar(1) ,  Quantity int,    Col1  int,  Col2 int);
insert into t values
('A'   ,    1       ,    123  ,   234),
('A'   ,    3       ,    456  ,   758),
('A'   ,    2       ,    588  ,   258),
('A'   ,    2       ,    234  ,   456);

select item,sum(sumqty) sumqty,sum(obs) sumcount, col
from
(
select item, sum(quantity) sumqty, count(*) as obs, col1 as col
from t 
group by item, col1
union all
select item, sum(quantity),count(*) as obs, col2
from t 
group by item, col2
) s
group by item, col having sum(obs) > 1;

+------+--------+----------+------+
| item | sumqty | sumcount | col  |
+------+--------+----------+------+
| A    |      3 |        2 |  234 |
| A    |      5 |        2 |  456 |
+------+--------+----------+------+
2 rows in set (0.00 sec)
ttygqcqt

ttygqcqt2#

如果我理解你清楚你想加(总和)的项目数量,每当col1和col2相等。。。
这是对它的查询
从col1=col2的示例中选择sum(数量)

jobtbby3

jobtbby33#

从表名称中选择总和(数量),其中col1=col2

相关问题