如何在SQL中编写以下Query

时间:2016-11-06 16:05:42

标签: sql

如何编写查询:

如果我有像员工一样的表。假设我有n行,我想留下前+2行并显示n / 2 + 3行,e'g 10行,然后从第8行显示

4 个答案:

答案 0 :(得分:1)

假设您使用的是SQL Server,它可以提供帮助:

SELECT  *
FROM Employee
ORDER BY Id
OFFSET 2 ROWS 
FETCH NEXT (SELECTCOUNT(1)/2 + 3 from Employee) ROWS ONLY

如果是MySQL,请尝试使用LIMO,如@O_Z所述。

答案 1 :(得分:1)

您没有指定DBMS,因此这是标准SQL:

select *
from (
  select e.*, 
         row_number() over (order by some_column) as rn, 
         count(*) over () as total_rows
  from employee
) t
where rn in (1,2) 
   or rn >= (total_rows/2) + 3
   or rn > 8;

答案 2 :(得分:0)

在MySql中,如果在同一查询中需要不同的限制范围 例如使用union:

select myCol from mytab limit 2,3
uniion 
select myCol from mytab  limit 10,40
union 
.....

答案 3 :(得分:0)

在SQL Server中:

SELECT *
FROM Employee
EXCEPT(
    SELECT TOP 2 *
    FROM Employee
)