如何编写查询:
如果我有像员工一样的表。假设我有n行,我想留下前+2行并显示n / 2 + 3行,e'g 10行,然后从第8行显示
答案 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
)