如何从表中选择除前5条记录以外的所有记录?
我是新来查询mysql中的表,也使用存储过程。我在下面有这个查询,我想查询所有数据是>5
。有没有像这样的查询select * from table Except top 5
所以它会从数据开始#6
我搜索了一些代码,但我只找到一个没有条件的直接查询。如何从表中选择除前5条记录以外的所有记录?
SELECT *
FROM dbo.PersonSkill INNER JOIN
dbo.SpecialSkill ON dbo.PersonSkill.SpecialSkillsId = dbo.SpecialSkill.SpecialSkillsId
WHERE dbo.PersonSkill.PersonId = @PersonId
SQL服务器可是没有LIMIT或OFFSET功能,但您可以模拟此行为,如this,结果如下所示:
;WITH Results_CTE AS
(
SELECT
dbo.PersonSkill.*, dbo.SpecialSkill.SpecialSkillsId, dbo.SpecialSkill.OtherCol
ROW_NUMBER() OVER (ORDER BY @PersonId) AS 'RowNum'
FROM dbo.PersonSkill
INNER JOIN dbo.SpecialSkill
ON dbo.PersonSkill.SpecialSkillsId = dbo.SpecialSkill.SpecialSkillsId
WHERE dbo.PersonSkill.PersonId = @PersonId
)
SELECT *
FROM Results_CTE
WHERE RowNum >5
您可以简单地使用LIMIT参数。
LIMIT 5, 10
第一个参数(5) - 开始从
第二个参数(10) - 多少行选择
我如何在我的查询中使用它?对不起,新的在这我想选择所有其余的数据。 –
阅读此文档:http://dev.mysql.com/doc/refman/5.7/en/select.html此网站不是“我将免费编写您的代码”了解它是如何工作的。这只是如何制作和学习的一种方式。 – 3y3skill3r
'LIMIT'与'ORDER BY'一起使用时才有意义。所以你应该为查询添加一个排序。 –
试试这个
SELECT *
FROM dbo.PersonSkill INNER JOIN
dbo.SpecialSkill ON dbo.PersonSkill.SpecialSkillsId = dbo.SpecialSkill.SpecialSkillsId
WHERE dbo.PersonSkill.PersonId = @PersonId and unique_id not in (SELECT top 5 unique_id
FROM dbo.PersonSkill INNER JOIN
dbo.SpecialSkill ON dbo.PersonSkill.SpecialSkillsId = dbo.SpecialSkill.SpecialSkillsId
WHERE dbo.PersonSkill.PersonId = @PersonId)
关键字LIMIT的语法不正确。我正在使用sql server 2008 r2 –
真的,那么你应该修改你的标签草莓建议。 –
试试这个
SELECT * FROM (SELECT *,ROW_NUMBER() OVER (ORDER BY @PersonId) as rn
FROM dbo.PersonSkill INNER JOIN
dbo.SpecialSkill ON dbo.PersonSkill.SpecialSkillsId = dbo.SpecialSkill.SpecialSkillsId
WHERE dbo.PersonSkill.PersonId = @PersonId)A where A.rn>5
这是关于MySQL? – Strawberry