2014-12-27 66 views
3

我想获得不同"SkillCategory"和排序idORA-01791-鲜明和

这里顺序是下面的脚本:

SELECT distinct EC.SKILL_CATEGORY from ETOPS_CHECK_FORM E 
INNER JOIN EC_FORM_SKILL EC 
ON EC.EC_FORM_ID=E.ID group by EC.SKILL_CATEGORY ORDER BY EC.ID 

什么,我做错了什么?

回答

3

的问题是,你需要决定其中 id排序。取出distinct,然后用在order by聚合函数:

SELECT EC.SKILL_CATEGORY 
FROM ETOPS_CHECK_FORM E INNER JOIN 
    EC_FORM_SKILL EC 
    ON EC.EC_FORM_ID = E.ID 
GROUP BY EC.SKILL_CATEGORY 
ORDER BY MIN(EC.ID); 
+0

对不起,对我而言,这是作品的魅力:) – 2014-12-27 14:04:56

0

如果你只是想不使用聚合函数不重复的记录,然后使用DISTINCT关键字来代替GROUP BY

试试这个:

SELECT DISTINCT EC.SKILL_CATEGORY 
FROM ETOPS_CHECK_FORM E 
INNER JOIN EC_FORM_SKILL EC ON EC.EC_FORM_ID = E.ID 
ORDER BY EC.ID; 
+0

它不能工作。甲骨文不知道如何使用key2对它进行排序,当它已经使用key1进行分类时。 – 2014-12-27 14:03:57

0
SELECT distinct EC.SKILL_CATEGORY 
FROM ETOPS_CHECK_FORM E 
    INNER JOIN EC_FORM_SKILL EC 
      ON EC.EC_FORM_ID=E.ID 
GROUP BY EC.SKILL_CATEGORY ASC 
ORDER BY MAX(EC.ID) 
0

我不知道你真正想做的...... ^^ 但是,如果你运行该脚本波纹管,你能告诉我们,如果结果是你所希望的:

Select ec.skill_category as sc 
from EC_FORM_SKILL ec 
group by sc; 

待会儿见。

+0

脚本不排序它是我的权利。它应按照编号 – 2014-12-27 14:12:30

+0

排序,按ec.id排序。但是你需要在select中返回这个;) – YannXplorer 2014-12-27 17:01:34