Sql 从表中选择唯一数据的更好方法

Sql 从表中选择唯一数据的更好方法,sql,database,Sql,Database,我正在学习SQL。我想选择员工(emp\u name,emp\u lname,project\u name),它只有一个项目(不是更多或更少) 我在数据库中有3个表: 表: create table employee( emp_id char (5) primary key, emp_name nvarchar(15) not null, emp_lname nvarchar(20) ); create table project( pr_id char(5)

我正在学习SQL。我想
选择
员工
emp\u name,emp\u lname,project\u name
),它只有一个
项目(不是更多或更少)

我在数据库中有3个表:

表:

create table employee(
    emp_id char (5) primary key,
    emp_name nvarchar(15) not null,
    emp_lname nvarchar(20)
);

create table project(
    pr_id char(5) primary key,
    project_name nvarchar(10) not null,
    project_budjet int
);

create table employee_project(
    emp_id char (5) foreign key references employee(emp_id),
    pr_id char(5) foreign key references project(pr_id),
    constraint premppk primary key(emp_id, pr_id)
);
我正试图从
employee\u项目
中选择
only unique
emp\u id

此代码为我提供了来自
employee\u项目的唯一
emp\u id

select emp_id, count(pr_id) from employee_project
    group by emp_id having count(pr_id) = 1
但是我需要
emp\u id
pr\u id
选择
emp\u名称
emp\u名称
项目名称
。我也尝试使用
emp\u id
选择
pr\u id
。代码:

select ep.emp_id, ep.pr_id from employee_project as ep,
    (
    select emp_id, count(pr_id) from employee_project
        group by emp_id having count(pr_id) = 1
    ) CT
where CT.emp_id = ep.emp_id
现在,我可以选择所有我需要的关于这些
employee
project
的信息。最后,代码:

select employee.emp_name, employee.emp_lname, project.project_name
    from employee, project, 
        (
        select ep.emp_id, ep.pr_id from employee_project as ep,
            (
            select emp_id, count(pr_id) from employee_project
                group by emp_id having count(pr_id) = 1
            ) CT
        where CT.emp_id = ep.emp_id
        ) CK
where CK.emp_id = employee.emp_id and CK.pr_id = project.pr_id
有什么方法可以轻松做到这一点


谢谢您的帮助。

因为您只需要寻找一个项目,所以您也可以使用组中的任何聚合函数来获取该项目。我使用了
min(pr\u id)
,但您也可以使用
avg()
max()

之后,您可以联接表以获取所有其他列值

select e.*, p.*
from 
(
  select emp_id, min(pr_id) as pr_id
  from employee_project
  group by emp_id 
  having count(pr_id) = 1
) ep
join employee e on e.emp_id = ep.emp_id
join project p on p.pr_id = ep.pr_id

我不这么认为
distinct
将首先提供给我,但不是唯一的。我不需要,如果它在桌上一次。