2016-11-14 26 views
0

私は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   
+0

を試してみて、これは、MySQLについてですか? – Strawberry

答えて

2

SQL Serverを試してみてください関数は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 
+0

Results_CTEとはどういう意味ですか? –

+0

一時テーブルのエイリアス – Aroniaina

+0

このエラーが発生しました。 '' Results_CTE 'に' SpecialSkillsId 'カラムが複数回指定されました。 ' –

1

単純にLIMITパラメータを使用できます。

LIMIT 5, 10 

最初のパラメータ(5) -

2番目のパラメータ(10)からスタート -

+0

私はどのように私のクエリでそれを使用できますか?ごめんなさい。私はすべての残りのデータを選択したいと思います。 –

+0

この文書をお読みください:http://dev.mysql.com/doc/refman/5.7/en/select.htmlこのサイトは「あなたのコードを無料で書く」ではありません。それはそれを作り、それを学ぶ方法のほんの一例です。 – 3y3skill3r

+0

'LIMIT'は' ORDER BY'と一緒に使用すると意味があります。したがって、クエリに順序を追加する必要があります。 –

2

を選択するために、どのように多くの行LIMITを持っているか、OFFSET doesntのこの

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) 
+0

キーワードLIMITの構文が正しくありません。私はSQL Server 2008 R2を使用しています –

+0

本当に、あなたはイチゴのようにあなたのタグを修正する必要があります提案。 –

1

この

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 
関連する問題