sql >> データベース >  >> RDS >> Sqlserver

SQLServerでTopをTiesで使用する方法-SQLServer/TSQLチュートリアルパート114

    前回の投稿では、SQLサーバーテーブルから上位/下位のx行を返す方法を学びました。この投稿では、Topwithtieを学びます。

    BOLによると
    "WITH TIES
    限定された結果セットの最後の場所に関連する2つ以上の行を返したい場合に使用されます。 ORDERBY句と一緒に使用する必要があります。 WITH TIESを使用すると、式で指定された値よりも多くの行が返される場合があります。たとえば、式が5に設定されているが、追加の2行が行5のORDER BY列の値と一致する場合、結果セットには7行が含まれます。 "

    dbo.Customerテーブルを作成して、TopとTopWithTiesの違いを確認しましょう。

    Create table dbo.Customer(
    Id int,
    Name VARCHAR(10),
    Address VARCHAR(100))
    
    --Insert records in dbo.Customer table
    Insert into dbo.Customer
    Values(1,'Aamir','XyZ Address')
    ,(2,'Raza',Null)
    ,(1,'Aamir','XyZ Address')
    ,(1,'John','XyZ Address')
    ,(5,'Lisa','XyZ Address')
     上記で強調表示されているように、重複するレコードがあることに注意してください。以下のクエリを実行してみましょう。最初はTopのみで、2番目は "With Ties"で実行し、出力を確認します。

    Select top (2) * From dbo.Customer 
    order by ID
    
    how to use Top x to get top records from table in SQL Server - TSQL Tutorial
    Select top (2) WITH TIES * From dbo.Customer order by ID
     
    SQLServerでTopwithTiesを使用してTopx行を取得する方法-SQLServer/TSQLチュートリアル
     最初のクエリは2レコードのみを返しましたが、「With Ties」を使用した2番目のクエリは3つのレコードを返しました。これは、3番目のレコードのIdの値も1であり、2番目の行と一致したためです(id列の値=1)。 Topで「WithTies」を使用すると、クエリは順序列に基づいて最後の行とのすべてのタイも提供します。





    1. SQL Serverの問題を数分で検索、優先順位付け、および解決

    2. 同じステートメントで挿入のIDを取得します

    3. PostgreSQLのシステム言語とエラーメッセージを変更する

    4. 死ぬことのないゾンビPerfMonカウンター!