SQL和数字组合搜索

时间:2013-07-09 09:22:48

标签: sql search combinations

我有10个数字字段的表(比方说F1, F2... F10)。

现在我有4个号码(N1, N2, N3, N4)。

我必须找到这4个数字是否出现在上表中的任何位置。例如,如果 F2 = N4 F1 = N2 Fx = N3 Fy = N1 (任何订单) ,任何组合)。

我想知道是否可以通过SQL快速完成此操作,或者只是编写looooong组合选择的唯一方法(我不确定在这一生中我是否能够完成它)。

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法(如果您的数据库支持它)将是数据透视,以便10列中的每一列都有自己的行。

所以

ID F1 F2 F3 .. Fn
1  1  2  3     10

变为

ID F
1  1
1  2
1  3
..
1  10

现在,您可以针对单个列查询给定F值的存在,这有点简化了事情。

SQL Server支持此功能Using PIVOT and UNPIVOT

答案 1 :(得分:1)

<强> Here is SQLFiddel Demo

以下是示例查询

select * from Temp
where 'N1' in (F1,F2,F3,F4,F5,F6,F7,F8,F9,F10)
  and 'N2' in (F1,F2,F3,F4,F5,F6,F7,F8,F9,F10)
  and 'N3' in (F1,F2,F3,F4,F5,F6,F7,F8,F9,F10)
  and 'N4' in (F1,F2,F3,F4,F5,F6,F7,F8,F9,F10)