select stable_1.RESUME_ID  from (SELECT    R.RESUME_ID,A.APL_NAME,SA.TEST_CODE,R.AGE,R.STATURE,R.GENDER,R.PEOPLE,R.BIRTH,R.NATIVE_PLACE,R.HUKOU,R.ID_CARD_NUM,R.MARITAL_STATUS,R.TOP_DEGREE,R.PARTY,R.EXP_SALARY,R.EMAIL,R.ADDRESS,R.MOBILE,R.POST_CODE,RS.CLASS_RANK,R.PEVIOUS_DEPT,R.TECHNICAL_TITLE,R.ARCHIVE_PLACE,JP.POS_NAME,JP.DEPT_NAME,JP.POS_NAME,R.GRADUATE_SCHOOL,R.MAJOR,R.BMCC_RELATION,R.TOP_EDU,R.SECOND_LANG,R.SECOND_LANG_GRADE,R.OFFICE_TEL,R.HOME_TEL,R.MEDIUM_MODE,SA.TEST_ID,SA.PASSWORD,SA.CONFIRM_FLAG,SA.CONFIRM_TIME,A.HR_COMMENT,A.RESUME_SCORE 
FROM RESUME R,APPLICANT A,JOB_POSITION JP,RESUME_STUDY RS,RESUME_POS RP,MAS_TEST_SITE MTS,SITE_APPLICANT SA
 
WHERE R.RESUME_ID = A.RESUME_ID AND R.RESUME_ID = RP.RESUME_ID AND R.RESUME_ID = RS.RESUME_ID  
AND RP.POS_ID in ( SELECT RPOS.POS_ID FROM RESUME_POS RPOS WHERE RPOS.RESUME_ID IN (  SELECT A.RESUME_ID FROM APPLICANT A LEFT join SITE_APPLICANT SA on A.APL_ID=SA.APL_ID WHERE SA.SITE_ID IN (3606)))  AND JP.POS_ID = RP.POS_ID AND A.APL_ID = SA.APL_ID 
AND MTS.SITE_ID = SA.SITE_ID AND SA.SITE_ID IN (3606) AND (A.Status = 'W' OR A.Status = 'P' OR A.Status = 'E' OR A.Status = 'S')  
AND RS.STUDY_ID IN (SELECT st.STUDY_ID  FROM (SELECT  rs.resume_id,rs.study_id FROM resume_study rs WHERE RESUME_ID IN (SELECT A.RESUME_ID FROM APPLICANT A LEFT join SITE_APPLICANT SA on A.APL_ID=SA.APL_ID WHERE SA.SITE_ID IN (3606))  order by rs.resume_id,rs.study_endtime DESC)  st 
WHERE rownum=1 and R.RESUME_ID=st.resume_id) 
ORDER BY MTS.BEGIN_TIME,MTS.SITE_PLACE,SA.TEST_CODE) stable_1   
 
left join  
(SELECT W.WORK_ID,W.RESUME_ID,W.WORD_ENDTIME,W.WORK_COMPANY,W.WORK_SALARY  
 FROM RESUME_WORK W 
 where W.RESUME_ID IN 
 (
 SELECT A.RESUME_ID FROM APPLICANT A LEFT join SITE_APPLICANT SA on A.APL_ID=SA.APL_ID  
 WHERE SA.SITE_ID IN (3606) 
 ) 
order by RESUME_ID DESC) stable_2  
on stable_1.RESUME_ID=stable_2.RESUME_ID   为什么这条语句总是报:列模糊定义?的错误!

解决方案 »

  1.   

    order by RESUME_ID desc
    是不是表里有两个RESUME_ID 字段,加上表名比较好
      

  2.   

    太复杂了,嵌套了那么多层子查询,最好从里到外确认每个子查询没有问题.
    SELECT stable_1.resume_id
    FROM (SELECT r.resume_id, a.apl_name, sa.test_code, r.age, r.stature,
                  r.gender, r.people, r.birth, r.native_place, r.hukou,
                  r.id_card_num, r.marital_status, r.top_degree, r.party,
                  r.exp_salary, r.email, r.address, r.mobile, r.post_code,
                  rs.class_rank, r.pevious_dept, r.technical_title,
                  r.archive_place, jp.pos_name, jp.dept_name, jp.pos_name,
                  r.graduate_school, r.major, r.bmcc_relation, r.top_edu,
                  r.second_lang, r.second_lang_grade, r.office_tel, r.home_tel,
                  r.medium_mode, sa.test_id, sa.password, sa.confirm_flag,
                  sa.confirm_time, a.hr_comment, a.resume_score
           FROM resume r, applicant a, job_position jp, resume_study rs,
                resume_pos rp, mas_test_site mts, site_applicant sa
           WHERE r.resume_id = a.resume_id
           AND r.resume_id = rp.resume_id
           AND r.resume_id = rs.resume_id
           AND rp.pos_id IN
                 (SELECT rpos.pos_id
                  FROM resume_pos rpos
                  WHERE rpos.resume_id IN
                        (SELECT a.resume_id
                         FROM applicant a
                         LEFT JOIN site_applicant sa ON a.apl_id = sa.apl_id
                         WHERE sa.site_id IN (3606)))
           AND jp.pos_id = rp.pos_id
           AND a.apl_id = sa.apl_id
           AND mts.site_id = sa.site_id
           AND sa.site_id IN (3606)
           AND (a.status = 'W' OR a.status = 'P' OR a.status = 'E' OR
                 a.status = 'S')
           AND rs.study_id IN
                 (SELECT st.study_id
                  FROM (SELECT rs.resume_id, rs.study_id
                         FROM resume_study rs
                         WHERE resume_id IN
                               (SELECT a.resume_id
                                FROM applicant a
                                LEFT JOIN site_applicant sa ON a.apl_id = sa.apl_id
                                WHERE sa.site_id IN (3606))
                         ORDER BY rs.resume_id, rs.study_endtime DESC) st
                  WHERE rownum = 1
                  AND r.resume_id = st.resume_id)
           ORDER BY mts.begin_time, mts.site_place, sa.test_code) stable_1
    LEFT JOIN (SELECT w.work_id, w.resume_id, w.word_endtime, w.work_company,
                      w.work_salary
               FROM resume_work w
               WHERE w.resume_id IN
                     (SELECT a.resume_id
                      FROM applicant a
                      LEFT JOIN site_applicant sa ON a.apl_id = sa.apl_id
                      WHERE sa.site_id IN (3606))
               ORDER BY resume_id DESC) stable_2 ON stable_1.resume_id =
                                                    stable_2.resume_id
      

  3.   

    不行啊,将order by RESUME_ID desc改成order by W.RESUME_ID desc后,
    还是报:列模糊定义.
      

  4.   

    那些子查询都试过,都没有问题,只有最外层的 left join ... on ..会出这个错误!