【问题标题】:MySQL. How to combine or match specifics rows from two tablesmysql。如何组合或匹配两个表中的特定行
【发布时间】:2020-08-27 21:35:04
【问题描述】:

首先,标题不是很清楚。通过这个示例,我想知道是否有使用 SQL 代码的解决方案,或者是否必须使用 C#、Java、PHP 等在另一端工作。

原理是这样的:

  1. 有一个输入表,如下所示:
    ID  Name   Amount
    1   AA     10   
    2   BB     9
    3   CC     8
    4   DD     1
    5   ZZ     2
  1. 还有一个输出表:
    ID  Name   Fouls   
    1   BB     4
    2   ZZ     1
  1. 我想要得到的是根据每个匹配列减去数量,希望得到以下结果:
    Name   Diff
    AA     10   
    BB     5
    CC     8
    DD     1
    ZZ     1

可以直接用SQL做吗?

【问题讨论】:

  • 会有没有对应输入的输出吗?
  • @ysth 是的,但在此示例的实际范围内,Inputs 是原始的

标签: mysql sql join left-join sql-null


【解决方案1】:

你可以left join:

select i.name, i.amount - coalesce(o.fouls, 0) diff
from inputs i
left join outputs o on o.name = i.name

【讨论】:

  • 我的错是没有使用 COALESCE,没有它它总是返回 NULL。谢谢!!
  • @EveRegalado 总是展示你尝试过的东西;它使帮助您变得更加容易
【解决方案2】:

我想你只想要一个left join 和算术:

select i.id, i.name, i.amount - coalesce(o.fouls, 0)
from inputs i left join
     outputs o
     using (id)

【讨论】:

  • 我的错是没有使用 COALESCE,谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2022-11-19
  • 2016-05-28
相关资源
最近更新 更多