结果为啥顺序不一样,子查询的结果我也测试过了,挺正常啊。

来源:5-5 练习

无丶丶丶丶丶丶丶聊

2019-06-27 14:36

SELECT T.CI_ID, WM_CONCAT(T.STU_NAME)
  FROM (SELECT S.STU_NAME, C.CI_ID, INSTR(C.STU_IDS, S.STU_ID)
          FROM PM_CI C, PM_STU S
         WHERE INSTR(C.STU_IDS, S.STU_ID) > 0) T
 GROUP BY T.CI_ID

https://img3.mukewang.com/5d1463780001a8de04540141.jpg


SELECT S.STU_NAME, C.CI_ID, INSTR(C.STU_IDS, S.STU_ID)

          FROM PM_CI C, PM_STU S

         WHERE INSTR(C.STU_IDS, S.STU_ID) > 0

子查询结果

https://img3.mukewang.com/5d1463da0001c7de04870212.jpg

写回答 关注

2回答

  • 慕沐6523080
    2020-05-28 10:32:35

    select ci_id,MAX(M) from (

    select ci_id,wm_concat(stu_name) over (partition by c.ci_id order by s.stu_id)m from pm_ci c,pm_stu s where instr(c.stu_ids,s.stu_id)>0)e group by e.ci_id;


  • qq_齷壐缳膩_0
    2019-09-20 17:46:01

    vm_concat()函数拼接得到的结果是乱序的,需要在给他排序,好像要借助

      SELECT  *    FROM  (SELECT  A.*,ROW_NUMBER()  OVER  (PARTITION  BY  根据去重字段  ORDER  BY  去重时的排序字段)  RN FROM  换成表名  A  )  WHERE  RN=1



Oracle高级查询

数据库开发中应用广泛的高级查询,本教程通过大量的案例详细讲解

62862 学习 · 144 问题

查看课程

相似问题