存在具有以下类型的相同字段的表:
name: table_1
_________________________________________
|pole_1 | pole_2 | pole_3 | pole_4 |
-----------------------------------------
| 1 | 1 | 1 | 1 | - уникальная запись
| 2 | 2 | 2 | 2 | - уникальная запись
| 3 | 3 | 3 | 3 | - уникальная запись
-----------------------------------------
name: table_2
_________________________________________
|pole_1 | pole_2 | pole_3 | pole_4 |
-----------------------------------------
| 1 | 1 | 1 | 1 | - запись уже есть в table_1
| 1 | 2 | 3 | 4 | - уникальная запись
----------------------------------------
name: table_3
_________________________________________
|pole_1 | pole_2 | pole_3 | pole_4 |
-----------------------------------------
| 2 | 2 | 2 | 2 | - запись уже есть в table_1
| 3 | 4 | 5 | 6 | - уникальная запись
-----------------------------------------
....
name: table_10
_________________________________________
|pole_1 | pole_2 | pole_3 | pole_4 |
-----------------------------------------
| 3 | 4 | 5 | 6 | - запись уже есть в table_3
| 7 | 8 | 10 | 12 | - уникальная запись
----------------------------------------
有必要按顺序从两个字段中的所有表中输出所有唯一记录和所有字段table_1, table_2, table_3,..,table_10。
我执行以下操作:
select pole_1, pole_2 from ( -- c GROUP BY могу указать только 2 поля, а нужно на вывод все 4 (pole_1, pole_2, pole_3, pole_4)
select * from (
select t.*, 1 as table_number from table_1 t
union all
select t.*, 2 as table_number from table_2 t
union all
select t.*, 3 as table_number from table_3 t
union all
....
union all
select t.*, 10 as table_number from table_10 t
) order by table_number
) group by pole_1, pole_2
我得到了我需要的记录,但是现在如何显示剩余的字段 ( pole_3, pole_4) 以便得到原始表:
name: result_table (Таблица которая должна быть на выходе)
_________________________________________
|pole_1 | pole_2 | pole_3 | pole_4 |
-----------------------------------------
| 1 | 1 | 1 | 1 | - Запись взята именно из table_1
| 2 | 2 | 2 | 2 | - Запись взята именно из table_1
| 3 | 3 | 3 | 3 | - Запись взята именно из table_1
| 1 | 2 | 3 | 4 | - Запись взята именно из table_2
| 3 | 4 | 5 | 6 | - Запись взята именно из table_3
| 7 | 8 | 10 | 12 | - Запись взята именно из table_10
-----------------------------------------
表按降序排列优先级,即 最高优先级赋予应首先从中获取记录table_1的表。y具有最低优先级,如果在其他表中没有找到相同的条目,则最后获取它的条目。table_10
重要提示:未使用的字段group by可能会有所不同,因此需要优先级。
我建议在分组之前将列中的值替换为
pole_3所需的值。pole_4首先,当按 排序table_number和分组时pole_1, pole2。之后,我们将按所有字段分组以删除重复行。我们将值替换为窗口函数first_value:第二个选项是对未来组中的行进行编号并取第一个: