sql >> データベース >  >> Database Tools >> SQLyog

ID列によるSQLLIMIT

    サービステーブルを直接読み取る代わりに、サブクエリを使用してそれに結合します。

    select s.*, u.`fname`, u.`lname`, aif.`airport` FROM 
        ( select * from services order by id limit 2) as s INNER JOIN airports_in_flight aif
        ON s.`id` = aif.`service_id` INNER JOIN users u
        ON s.`service_provider_id` = u.`id`
    

    mysqlのバージョンによっては、limitとoffsetを使用してサブクエリINを設定することはできません(このバージョンのMySQLは「LIMIT&IN / ALL / ANY / SOMEサブクエリ」をまだサポートしていません)が、これは引き続き機能します。

    編集:

    内部クエリをこれに設定した場合:

    (SELECT s.id
    FROM services s
    INNER JOIN airports_in_flight aif
        ON s.`id` = aif.`service_id`
    INNER JOIN users u
        ON s.`service_provider_id` = u.`id`
    LIMIT 2)
    

    その後、airports_in_flightとusersのサービスのみが返されます(別の句を追加する可能性があります)。

    明確にするために編集:

    今、あなたはこれをあなたの選択として持っています:

    select s.*, u.`fname`, u.`lname`, aif.`airport` FROM 
            services as s INNER JOIN airports_in_flight aif
            ON s.`id` = aif.`service_id` INNER JOIN users u
            ON s.`service_provider_id` = u.`id`
    

    2つのサービスに制限したいので(すべてのサービスが必要かどうかはわかりません。一致するユーザーと飛行中の空港があるサービスだけを推測しています)、適切なテーブルに制限を設定する必要があります。

    >

    この場合、右側のテーブルはサービステーブルです。物事を単純にするために、あなたが持っているものの単純化されたバージョンから始めましょう:

    SELECT s.*, aif.`airport` FROM 
            services as s 
    INNER JOIN airports_in_flight aif ON s.`id` = aif.`service_id`
    

    すべてのサービスのフライト列に空港があると仮定します(後でその複雑さを追加できます)。

    最初の2つのサービスを一覧表示するには、クエリ全体ではなく、サービスに制限を設定する必要があるため、次のようになります。

    SELECT s.*, u.`fname`, u.`lname`, aif.`airport` FROM 
            (select * from services limit 2) as s 
    INNER JOIN airports_in_flight aif ON s.`id` = aif.`service_id`
    

    テーブルサービスをクエリに置き換えたことに注意してください。これを制限できるようになりました。これがサブクエリです。空港が飛行中のサービスのみを確認したい場合は、そのサブクエリを次のように変更する必要があります。

    select * from services limit 2
    

    select ss.* from services ss 
    inner join airports_in_flight aifs on ss.`in` = aifs.`service_id` limit 2
    

    servicesテーブルとairports_in_flightテーブルの名前をssとaifsに変更して、メインクエリの名前と衝突しないようにし、内部結合を入れて行をサービステーブルのみに制限し、2つに制限したので、サブクエリを現在取得しているクエリ:

    select s.*, u.`fname`, u.`lname`, aif.`airport` 
    FROM 
      (select ss.* from services ss 
       inner join airports_in_flight aifs on ss.`in` = aifs.`service_id`
       limit 2) as s 
    INNER JOIN airports_in_flight aif ON s.`id` = aif.`service_id`
    

    次に、サブクエリを展開してユーザーの内部結合を追加し(したがって、サービスをairports_in_flight行とusers行を持つサービスのみに制限します)、usersテーブルをメインクエリに追加できるはずです。




    1. PHPMyAdminWindowsXAMPPにMySQL拡張機能の問題がありません

    2. アプリケーションはログファイルなしで.mdfを開くことができますが、ManagementStudioは接続できません

    3. Microsoft Sql ServerManagmentstudioのバックアップサイズがマイナスになります

    4. SQLServer管理スタジオ自動大文字化の方法