0

我有一个 SQL 查询,我在 WHERE 子句中使用子查询。然后我需要再次使用相同的子查询将其与不同的列进行比较。

我假设我没有办法在子查询之外访问“emp_education_list li”?

我猜子查询重复是多余的。坦率地说,我对 SQL 有点生疏。

SELECT e.fname, e.lname
    FROM employee e, emp_education_list l
    WHERE
        e.skillsID = l.skillsID
    AND
    (
        SELECT li.educationID
            FROM emp_education_list li, job j
            WHERE j.skillsID = li.skillsID
            AND j.jobID = 1001
    ) = l.educationID
    AND
    (
        SELECT li.edu_level
            FROM emp_education_list li, job j
            WHERE j.skillsID = li.skillsID
            AND j.jobID = 1001
    ) < l.edu_level
;
4

3 回答 3

0

试试这个,

SELECT  e.fname, e.lname
FROM    employee e 
        INNER JOIN emp_education_list l
            ON e.skillsID = l.skillsID
        INNER JOIN
        (
            SELECT  li.educationID, li.edu_level
            FROM    emp_education_list li
                    INNER JOIN job j 
                        ON j.skillsID = li.skillsID
            WHERE   j.jobID = 1001
        ) x ON  l.educationID = x.educationID
WHERE   x.edu_level < l.edu_level
于 2013-09-12T05:43:14.810 回答
0

试试这个,JOIN 我想正确的加入会解决其余的条件

SELECT e.fname, e.lname
FROM employee e 
JOIN  emp_education_list l ON (e.skillsID = l.skillsID)
JOIN job j  ON ( j.skillsID = l.skillsID AND j.jobID = 1001) 
于 2013-09-12T05:44:54.470 回答
0

试试这个:

SELECT e.fname, e.lname
FROM employee e, 
     emp_education_list l,
     job j
WHERE
         e.skillsID = l.skillsID
     and j.skillsID = l.skillsID
     and j.jobID = 1001 
于 2013-09-12T05:52:50.303 回答