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

最初の行に参加する方法

    SELECT   Orders.OrderNumber, LineItems.Quantity, LineItems.Description
    FROM     Orders
    JOIN     LineItems
    ON       LineItems.LineItemGUID =
             (
             SELECT  TOP 1 LineItemGUID 
             FROM    LineItems
             WHERE   OrderID = Orders.OrderID
             )
    

    SQL Server 2005以降では、INNER JOINを置き換えるだけで済みます。 CROSS APPLYを使用 :

    SELECT  Orders.OrderNumber, LineItems2.Quantity, LineItems2.Description
    FROM    Orders
    CROSS APPLY
            (
            SELECT  TOP 1 LineItems.Quantity, LineItems.Description
            FROM    LineItems
            WHERE   LineItems.OrderID = Orders.OrderID
            ) LineItems2
    

    TOP 1に注意してください ORDER BYなし 決定論的ではありません。このクエリでは、注文ごとに1つの広告申込情報が表示されますが、どの広告申込情報になるかは定義されていません。

    クエリを複数回呼び出すと、基になるものが変更されていない場合でも、同じ注文に対して異なる広告申込情報が表示される可能性があります。

    確定的な順序が必要な場合は、ORDER BYを追加する必要があります 最も内側のクエリへの句。

    sqlfiddleの例



    1. MariaDBでのSYSDATE()のしくみ

    2. DATABASE()–MySQLで現在のデータベース名を取得します

    3. 2つのSQLServerデータベースを比較するための無料のツールとは何ですか?

    4. 高度なInnoDB設定によるMySQLパフォーマンスの向上