1

我想上面的问题已经被问过几次了......我仍然无法在我的查询中实现它..在下面的查询中有一个员工的服务表,他们的员工 id 存在于 temp table 中。 ...每个员工可能在不同的地方工作过..因此每个员工可能有不止一个记录..我试图找出最后一次发布的详细信息...但是在第三行我得到了提到的错误..如果我使用“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;
4

2 回答 2

2

您的子查询中有错误的 where 条件: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;
于 2013-03-11T09:02:44.423 回答
1

你能告诉我当你在 SELECT 子句中没有使用它的任何列时加入表“temp”有什么意义。

尝试将其放在 EXISTS 子句中。

于 2013-03-11T11:50:45.057 回答