如何使用 `group by` 将 select `insert into` 并在 Oracle 中具有唯一的约束键?
How to `insert into` with select using `group by` and having a unique constraint key in Oracle?
我正在尝试 insert into
一个 table,来自其他 2 table 的 5 个值,但是当我
尝试插入它们,Oracle 向我发送一条消息,说我违反了唯一键限制,我不明白如果我在 select.[= 中使用 distinct
子句,为什么会出现这个问题16=]
谢谢
我的查询:
insert into grados_salariales (Department_id,
Department_name,Sumatoria,Sal_minimo,Sal_maximo)
Select distinct departments.department_id,
departments.department_name,
sum(employees.salary),min(employees.salary),
max(employees.salary)
from employees,departments
group by salary,department_name,
departments.department_id;
这是已经存在的table唯一键语句
create table
grados_salariales(
Department_id number,
Department_name varchar(50),
Sumatoria number,
Sal_minimo number,
Sal_maximo number);
Alter table grados_salariales
add constraint Department_id_pk
primary key ( Department_id);
我希望插入 department_id
没有问题。
这是您的查询:
select distinct d.department_id, d.department_name,
sum(e.salary), min(e.salary),
max(e.salary)
from employees e join
departments d
on e.department_id = d.department_id
group by e.salary, d.epartment_name, d.department_id;
问题是 group by
中的 salary
。如果你想每个部门一行,那么你可以这样做:
select d.department_id, d.department_name,
sum(e.salary), min(e.salary),
max(e.salary)
from employees e join
departments d
on e.department_id = d.department_id
group by d.department_name, d.department_id;
备注:
- 从不 在
FROM
子句中使用逗号。
- 始终使用正确、明确的标准
JOIN
语法。
- 使用 table 别名使您的查询更易于编写和阅读。
SELECT DISTINCT
几乎不适合 GROUP BY
.
我正在尝试 insert into
一个 table,来自其他 2 table 的 5 个值,但是当我
尝试插入它们,Oracle 向我发送一条消息,说我违反了唯一键限制,我不明白如果我在 select.[= 中使用 distinct
子句,为什么会出现这个问题16=]
谢谢
我的查询:
insert into grados_salariales (Department_id,
Department_name,Sumatoria,Sal_minimo,Sal_maximo)
Select distinct departments.department_id,
departments.department_name,
sum(employees.salary),min(employees.salary),
max(employees.salary)
from employees,departments
group by salary,department_name,
departments.department_id;
这是已经存在的table唯一键语句
create table
grados_salariales(
Department_id number,
Department_name varchar(50),
Sumatoria number,
Sal_minimo number,
Sal_maximo number);
Alter table grados_salariales
add constraint Department_id_pk
primary key ( Department_id);
我希望插入 department_id
没有问题。
这是您的查询:
select distinct d.department_id, d.department_name,
sum(e.salary), min(e.salary),
max(e.salary)
from employees e join
departments d
on e.department_id = d.department_id
group by e.salary, d.epartment_name, d.department_id;
问题是 group by
中的 salary
。如果你想每个部门一行,那么你可以这样做:
select d.department_id, d.department_name,
sum(e.salary), min(e.salary),
max(e.salary)
from employees e join
departments d
on e.department_id = d.department_id
group by d.department_name, d.department_id;
备注:
- 从不 在
FROM
子句中使用逗号。 - 始终使用正确、明确的标准
JOIN
语法。 - 使用 table 别名使您的查询更易于编写和阅读。
SELECT DISTINCT
几乎不适合GROUP BY
.