使所有表成为父 ID 的子项(在 1 列中)
Making all tables results a child(in 1 columns) for a Parent ID
我有 1 个有 5 列的 table,我需要根据原始 table 中的密钥 ID 创建另一个只有 2 列的 tabled,其中该列不为空。
每列中的数据始终相同。
示例:
ID | Col1 | Col2 | Col3 | Col4 |
1 | A | B | - | - |
2 | - | B | - | D |
3 | A | - | C | D |
需要新的输出 table:
ID | Child |
1 | A |
1 | B |
2 | B |
2 | D |
3 | A |
3 | C |
3 | D |
我似乎无法理解这个问题,虽然我觉得我缺少了一些非常简单的东西,而且我需要加入 table 本身,但它是推杆所有的结果都集中在一个单一的栏目中,这让我很困惑。如有任何帮助,我们将不胜感激,如有任何问题,请随时提出。
此外,请问我正在尝试执行的这个过程有名称吗?
- 我是否需要创建一个查询 select 每个 'ID + columnX' 分别进入 table,我总是在新的 'Child' 列中输入 X?
"standard" SQL 方法将使用 union all
:
select id, col1 as col from t where col1 is not null union all
select id, col2 from t where col2 is not null union all
select id, col3 from t where col3 is not null union all
select id, col4 from t where col4 is not null union all
select id, col5 from t where col5 is not null;
也就是说,这不是最有效的方法,因为它会扫描 table 五次(每列一次)。如果 "table" 真的是一个视图,这尤其糟糕。
有替代方法,但它们往往取决于数据库。
我有 1 个有 5 列的 table,我需要根据原始 table 中的密钥 ID 创建另一个只有 2 列的 tabled,其中该列不为空。
每列中的数据始终相同。
示例:
ID | Col1 | Col2 | Col3 | Col4 |
1 | A | B | - | - |
2 | - | B | - | D |
3 | A | - | C | D |
需要新的输出 table:
ID | Child |
1 | A |
1 | B |
2 | B |
2 | D |
3 | A |
3 | C |
3 | D |
我似乎无法理解这个问题,虽然我觉得我缺少了一些非常简单的东西,而且我需要加入 table 本身,但它是推杆所有的结果都集中在一个单一的栏目中,这让我很困惑。如有任何帮助,我们将不胜感激,如有任何问题,请随时提出。
此外,请问我正在尝试执行的这个过程有名称吗?
- 我是否需要创建一个查询 select 每个 'ID + columnX' 分别进入 table,我总是在新的 'Child' 列中输入 X?
"standard" SQL 方法将使用 union all
:
select id, col1 as col from t where col1 is not null union all
select id, col2 from t where col2 is not null union all
select id, col3 from t where col3 is not null union all
select id, col4 from t where col4 is not null union all
select id, col5 from t where col5 is not null;
也就是说,这不是最有效的方法,因为它会扫描 table 五次(每列一次)。如果 "table" 真的是一个视图,这尤其糟糕。
有替代方法,但它们往往取决于数据库。