mysql порядок с верхними четырьмя, тремя или двумя строками группы в зависимости от ввода - PullRequest
0 голосов
/ 27 мая 2020

SELECT fname AS 'manager', lname AS 'DR' FROM emps e INNER JOIN emps m ON m.empId = e.repTo order BY manager

Результат вышеуказанного запроса is

 manager1    repor1
 manager1    repor2
 manager1    repor3
 manager2    repor4
 manager2    repor5
 manager3    repor6
 manager3    repor7
 manager3    repor8
 manager4    repor9
 manager4    repor1

Как мне выбрать данные о двух главных менеджерах, данные о трех менеджерах или данные о менеджерах N номеров?

Две детали менеджера означают, что он должен возвращаться следующим образом:

 manager1    repor1
 manager1    repor2
 manager1    repor3
 manager2    repor4
 manager2    repor5

Ответы [ 3 ]

0 голосов
/ 27 мая 2020

1.

```select * from table_name A where manager in
(select distinct TOP 2 manager from table_name B  order by manager Asc)```

2.

```select * from table_name A left join
(select distinct TOP 2 manager from table_name order by manager Asc) B on A.manager = B.manager```
0 голосов
/ 27 мая 2020

Непонятно, что вы хотите для заказа. Если идентификаторы работают, то:

SELECT fname AS manager, lname AS DR
FROM emps e INNER JOIN
     emps m
     ON m.empId = e.repTo 
WHERE e.manager <= (SELECT DISTINCT m2.repTo
                    FROM emps m
                    ORDER BY m2.repTo
                    LIMIT 1 OFFSET 1
                   );
0 голосов
/ 27 мая 2020

Один вариант использует коррелированный подзапрос для фильтрации:

select m.fname AS manager, e.lname AS dr
from emps e 
inner join emps m on m.empId = e.repTo
where (select count(*) from emps e1 where e1.repTo = e.repTo and e1.lname <= e.lname) <= 2
order by manager
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...