SQL - on语句之后的内部联接语法

时间:2018-04-25 16:21:37

标签: mysql

因此,在我的数据库中,我有这些记录,这些记录具有序列号,以便将它们彼此分开。但是我希望将它们与另一个表格连接起来,其中一个人最多可以有两个与其帐户关联的序列号。

|account #|Serial#1|Serial#2|
------------------------------------------
|01234201 |P984564|P12388|
------------------------------------------

所以我的问题是,你可以在on语句中设置一个Inner Join查询来比较一列和两列。例如

INNER JOIN datatable2 ON datatable1.Serial#1 OR datatabel2.Serial#2 = datatable2.serial#

2 个答案:

答案 0 :(得分:1)

是的,它会是:

INNER JOIN datatable2 ON datatable1.Serial#1 = datatable2.serial# 
              OR datatable2.Serial#2 = datatable2.serial#

我强烈建议您将表格标准化,这样您就不需要在WHERE中使用OR条件。

答案 1 :(得分:1)

为数据创建规范化的View,而不是针对该数据进行查询。这将为您节省一些令人头疼的问题,并使您的查询更具可读性。有关 Select AccountNumber, Serial1 as Serial from datatable union select AccountNumber, Serial2 as Serial from datatable 的更多信息,请https://dev.mysql.com/doc/refman/8.0/en/create-view.html。特别是与您的视图相关联的查询将具有以下内容:

  Select AccountNumber from myView where Serial = (whatever)

我特别对mySQL有点生疏,但这应该给你一个通用的要点。然后像这样查询:

SUMPRODUCT(($I$9:$I$25=L9)*1)

如果正确规范化您的数据太困难,这是一个很好的解决方法,因为它与其他系统/流程捆绑在一起。