ORA-01427:使用select时,单行子查询返回多行

时间:2013-03-11 08:47:33

标签: sql oracle

我想上面的问题已被问过几次......我仍然无法在我的查询中实现它..在下面的查询中,有一个服务表,其中包含几个员工的员工ID临时表....每个员工可能在不同的地方工作..因此每个员工可能有不止一个记录..我试图找出最后一个帖子的详细信息...但在第三行我得到提到的错误..如果我使用“IN”而不是等于..我为每个员工ID获得多条记录

SELECT
    s.employee_id,
    s.from,
    s.to
FROM 
    service s, temp t
WHERE 
    t.employee_id = s.employee_id
    AND s.postnumber = (SELECT max(s1.postnumber)
                        FROM service s1, temp t1
                        WHERE t1.employee_id = s.employee_id)
ORDER BY 
    t.employee_id;

2 个答案:

答案 0 :(得分:2)

您的子查询中的条件有错误:t1.employee_id=s.employee_id

并在子查询中尝试distinct

试试这个:

select s.employee_id,s.from,s.to from service s,temp t
where t.employee_id=s.employee_id
and s.postnumber = (select distinct max(s1.postnumber) from service s1,temp t1 where     t1.employee_id=s1.employee_id)
order by t.employee_id;

答案 1 :(得分:1)

如果您没有在SELECT子句中使用任何列,可以告诉我加入表'temp'的重点是什么。

尝试将其放入EXISTS子句中。