繁体   English   中英

MySQL从一个表中取一行,而从另一个表中减去多行

[英]mysql taking one row from a table and minus multiple rows from another table

我在尝试弄清楚如何完成以下任务时遇到了一些麻烦。

表格1

╔═══╦════════════╦═════════════╗
║   ║ Apple      ║ Banana      ║
╠═══╬════════════╬═════════════╣
║ 1 ║ 20         ║ 15          ║
╚═══╩════════════╩═════════════╝

表2

╔═══╦════════════╦═════════════╦═════════════╗
║   ║ Cat        ║ Banana      ║Apple        ║
╠═══╬════════════╬═════════════╬═════════════╣
║ 1 ║ bbb        ║ 10          ║ 1           ║
║ 2 ║ aaa        ║ 2           ║ 2           ║
║ 3 ║ abc        ║ 1           ║ 3           ║
╚═══╩════════════╩═════════════╩═════════════╝

因此,两个表中都有香蕉和苹果,我想从表1中提取一行(这将是Apple = 20,而banana = 15),并使用这些数字减去表2的香蕉列中的所有行,苹果,而两个表有不同的方式来排序列。

我想得到一个结果

apple = 14 ( which is done by doing 20 - 1 - 2 - 3)
banana = 2 (which is done by doing 15 - 10 - 2 - 1)

有什么方法可以在查询中执行此操作,而不是从某个位置保存值并一个接一个地进行数学运算?

谢谢

您可以尝试如下操作:

select t2.Apple - t1.a
     , t2.Banana - t1.b
from (select sum(banana) as b, sum(apple) as a from tbl2) t1
join tbl1 t2

可能您可以通过一个SQL来完成它-但是如果表中有更多数据,这将非常慢。 更好的方法是进行2个单独的查询,并使用PHP进行数学运算。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM