【发布时间】:2021-10-30 12:01:27
【问题描述】:
我正在尝试编写一个选择查询来填充多个变量的所有组合。
我的数据格式如下
______________________________
| Variable | Value |
|----------------|-------------|
| variable_one | var_1_val_1 |
| variable_one | var_1_val_2 |
| variable_two | var_2_val_1 |
| variable_two | var_2_val_2 |
| variable_three | var_3_val_1 |
| variable_three | var_3_val_2 |
-------------------------------
注意:我有可变数量的变量和可变数量的每个变量的值(即:查询不应依赖于变量的数量或其值)。
我需要单个选择查询或可以将输出加载到临时表(即:带有循环)的查询,这些变量值的所有组合采用以下格式,必须随时生成组合 ID 以表示每个组合。
_________________________________________________
| CombinationID | Variable | Value |
|----------------|----------------|-------------|
| comb_1 | variable_one | var_1_val_1 |
| comb_1 | variable_two | var_2_val_1 |
| comb_1 | variable_three | var_3_val_1 |
| comb_2 | variable_one | var_1_val_1 |
| comb_2 | variable_two | var_2_val_1 |
| comb_2 | variable_three | var_3_val_2 |
| comb_3 | variable_one | var_1_val_1 |
| comb_3 | variable_two | var_2_val_2 |
| comb_3 | variable_three | var_3_val_1 |
| comb_4 | variable_one | var_1_val_1 |
| comb_4 | variable_two | var_2_val_2 |
| comb_4 | variable_three | var_3_val_2 |
| comb_5 | variable_one | var_1_val_2 |
| comb_5 | variable_two | var_2_val_1 |
| comb_5 | variable_three | var_3_val_1 |
| comb_6 | variable_one | var_1_val_2 |
| comb_6 | variable_two | var_2_val_1 |
| comb_6 | variable_three | var_3_val_2 |
| comb_7 | variable_one | var_1_val_2 |
| comb_7 | variable_two | var_2_val_2 |
| comb_7 | variable_three | var_3_val_1 |
| comb_8 | variable_one | var_1_val_2 |
| comb_8 | variable_two | var_2_val_2 |
| comb_8 | variable_three | var_3_val_2 |
-------------------------------------------------
我知道这可以在应用程序级别相对容易地完成,但是我得到了十几个变量,每个变量都有几个值,它们最终都是数百万个组合。在应用程序级别做起来真的很慢。
- 更新 这是在 MSSQL 上,但如果另一个 DBMS 让生活更轻松,我很乐意切换。
【问题讨论】:
-
具体的数据库是什么?这在 PosgreSQL 中可能是可能的。
-
@The Impaler,这是在 MSSQL 上,但如果另一个 DBMS 让生活更轻松,我很乐意切换。
-
带有自连接的交叉连接(笛卡尔积)正在做这样的事情。不知道我怎么能做 CombinationID 字段虽然
标签: sql combinations