我只想知道下面是否有另一种方法
分析功能,应提供更好的性能。
SELECT last_name FROM
(SELECT last_name, ROW_NUMBER() OVER (partition by department_id ORDER BY last_name) R FROM employees)
WHERE R =1;
答案 0 :(得分:0)
这是不使用row_number()的查询的替代方法。然而,尽管它可以作为替代方案使用,但它可能不如使用row_number()那样有效。请注意,以下示例在MySQL中的位可能几乎在任何rdbms中:
CREATE TABLE Employees
(`Department` varchar(1), `Last_Name` varchar(3))
;
INSERT INTO Employees
(`Department`, `Last_Name`)
VALUES
('a', 'abc'),
('a', 'def'),
('b', 'ghi')
;
查询1 :
select
e.*
from employees e
left join employees e2 on e.department = e2.department
and e.last_name > e2.last_name
where e2.last_name IS NULL
<强> Results 强>:
| Department | Last_Name |
|------------|-----------|
| a | abc |
| b | ghi |