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

Mysql SQL-on语句后的内部联接语法,mysql,Mysql,所以在我的数据库中,我有这些记录,它们有序列号,可以将它们彼此分开。然而,我想用另一个表来连接它们,在这个表中,一个人最多可以有2个序列号与他们的帐户相关联,就像这样 |account #|Serial#1|Serial#2| ------------------------------------------ |01234201 |P984564|P12388| ------------------------------------------ 所以我的问题是,您能否在on语句中设置一个内

所以在我的数据库中,我有这些记录,它们有序列号,可以将它们彼此分开。然而,我想用另一个表来连接它们,在这个表中,一个人最多可以有2个序列号与他们的帐户相关联,就像这样

|account #|Serial#1|Serial#2|
------------------------------------------
|01234201 |P984564|P12388|
------------------------------------------
所以我的问题是,您能否在on语句中设置一个内部联接查询来比较一列和两列。例如

在datatable1.Serial#1或datatabel2.Serial#2=datatable2.Serial#
是的,它将是:

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

不过,我强烈建议您规范化表,这样您就不需要在WHERE中使用OR条件。

为数据创建一个规范化的
视图,并对其进行查询。这将在将来为您节省一些麻烦,并使您的查询更具可读性。有关
View
s的更多信息。与您的视图相关联的查询尤其应该是这样的:

  Select AccountNumber, Serial1 as Serial from datatable union select AccountNumber, Serial2 as Serial from datatable
我对mySQL尤其有些生疏,但这应该给你一个大致的要点。然后像这样对其进行查询:

  Select AccountNumber from myView where Serial = (whatever)

如果由于数据与其他系统/流程关联,因此很难正确规范化数据,那么这是一个很好的解决方法。

**如果可能的话。有时这实际上是不可行的(例如,如果数据库结构绑定到ERP/CRM/etc)。第二个建议是从该视图创建一个视图,并直接对规范化视图进行查询。