Боюсь, вы ошиблись.Первый написанный вами запрос не вернет что-либо , он недопустим (вы не можете упорядочить по столбцу, который не является частью списка столбцов выбора, если вы используете DISTINCT или агрегаты):
SQL> with names (id, name, language_id) as
2 (select 1, 'paul' , 4 from dual union all
3 select 1, 'pablo' , 10 from dual union all
4 select 2, 'richard', 4 from dual
5 )
6 select distinct id
7 from names
8 where language_id In (4, 10)
9 order by name;
order by name
*
ERROR at line 9:
ORA-01791: not a SELECTed expression
SQL>
Почему вы заботитесь о NAME и хотите отсортировать результат по нему?Что это меняет?Почему бы просто не
SQL> with names (id, name, language_id) as
2 (select 1, 'paul' , 4 from dual union all
3 select 1, 'pablo' , 10 from dual union all
4 select 2, 'richard', 4 from dual
5 )
6 select distinct id
7 from names
8 where language_id In (4, 10);
ID
----------
1
2
SQL>
[РЕДАКТИРОВАТЬ]
Посмотрите, поможет ли это;Сначала агрегируйте (что означает, что вы все равно получите значения DISTINCT), затем сортируйте по MIN_NAME:
SQL> with names (id, name, language_id) as
2 (select 1, 'paul' , 4 from dual union all
3 select 1, 'pablo' , 10 from dual union all
4 select 2, 'richard', 4 from dual
5 ),
6 inter as
7 (select id, min(name) min_name
8 from names
9 where language_id in (4, 10)
10 group by id
11 )
12 select id
13 from inter
14 order by min_name;
ID
----------
1
2
SQL>