让我们考虑以下表结构:
Table1
Table1_ID A
1 A1
2 A1;B1
和
Table2
Table2_ID Table1_ID B C
1 1 foobar barfoo
2 2 foofoo barbar
我正在使用的视图由以下查询定义:
SELECT Table1.A, B, C
FROM Table2
INNER JOIN Table1 ON Table1.Table1_ID = Table2.Table1_ID;
A 的 95% 的数据包含在 2 个字符长的字符串中。在这种情况下,它工作正常。但是,其中 5% 实际上是该字段可能值的列表(使用分号作为分隔符)。
这意味着我的用户希望在适当的时候在这些值之间进行选择,并在其余时间自动使用单个值。当然,这对于单个 是不可能的INNER JOIN
,因为不能有一个恒定的选定值。
Table2很大,而 Table1 很小。在 Table2 的每一行中手动填充一个本地 A 字段将是一个巨大的时间浪费。
SQL(或更具体地说,SQL Server 2008)是否有一种有效的方法来处理这个问题?例如在字段中包含选定项目的列表?
我打算添加一个“A_ChosenValue”字段,当 A 中有一个列表时,它将存储所选值,当 A 只存储一个值时保持为空。它只需要用户填写 5% 的时间,这没关系。但我认为可能有比使用两列存储单个值更好的方法。