mysql从表中取一行,从另一个表中取出多行

时间:2015-10-28 08:08:52

标签: mysql sql

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

表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)

有没有办法在查询中执行此操作,而不是从某处保存值并逐个进行数学处理?

感谢

2 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

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

答案 1 :(得分:1)

可能你可以用一个SQL来做 - 但是如果表中会有更多数据,这将非常慢。 更好的是做两个单独的查询并用PHP进行数学运算。