SQL 查询以根据排序插入 table 并将其复制到其他类别
SQL query to insert a table based on the sort and duplicating the same for other categories
我有师父table
类型
时段
一个
0700
一个
0730
B
0600
B
0630
我想要最终的table,它具有所有类型的所有插槽,按升序排列
类型
时段
一个
0600
一个
0630
一个
0700
一个
0730
B
0600
B
0630
B
0700
B
0730
我正在使用 oracle SQL 开发人员。你能帮我找到什么类型的程序可以帮助我形成这个新的 table?
我们可以使用具有现有逻辑的交叉连接方法:
INSERT INTO master (Type, SlotTime)
SELECT t1.Type, t2.SlotTime
FROM (SELECT DISTINCT Type FROM master) t1
CROSS JOIN (SELECT DISTINCT SlotTime FROM master) t2
WHERE NOT EXISTS (
SELECT 1
FROM master m
WHERE m.Type = t1.Type AND m.SlotTime = t2.SlotTime
);
上面使用的交叉连接生成所有可能的类型和时隙组合。然后我们使用 exists 逻辑不插入任何已存在的元组 table.
我有师父table
类型 | 时段 |
---|---|
一个 | 0700 |
一个 | 0730 |
B | 0600 |
B | 0630 |
我想要最终的table,它具有所有类型的所有插槽,按升序排列
类型 | 时段 |
---|---|
一个 | 0600 |
一个 | 0630 |
一个 | 0700 |
一个 | 0730 |
B | 0600 |
B | 0630 |
B | 0700 |
B | 0730 |
我正在使用 oracle SQL 开发人员。你能帮我找到什么类型的程序可以帮助我形成这个新的 table?
我们可以使用具有现有逻辑的交叉连接方法:
INSERT INTO master (Type, SlotTime)
SELECT t1.Type, t2.SlotTime
FROM (SELECT DISTINCT Type FROM master) t1
CROSS JOIN (SELECT DISTINCT SlotTime FROM master) t2
WHERE NOT EXISTS (
SELECT 1
FROM master m
WHERE m.Type = t1.Type AND m.SlotTime = t2.SlotTime
);
上面使用的交叉连接生成所有可能的类型和时隙组合。然后我们使用 exists 逻辑不插入任何已存在的元组 table.