1

いくつかのコンポーネント (エイリアスとサブクエリ) を持つこの複雑な select ステートメントを見ました

SELECT
    u.ID, u.username, u.active, u.email, u.admin, u.banned, u.name,
    (SELECT
        GROUP_CONCAT( g.name SEPARATOR'-groupsep-' ) FROM groups g,
        group_memberships gm
        WHERE g.ID = gm.group AND gm.user = u.ID
    ) AS groupmemberships
    FROM users u WHERE u.ID={$uid}

私にとって意味をなさない部分はその部分AS groupmembershipsです。

エイリアシングとは何ですか?次の要素はu.name?

サブクエリ構文に慣れていません。

役立つ説明と公式ドキュメントへのリンクがあれば役立ちます。

4

3 に答える 3

1

Mysqlのマニュアルより

サブクエリは、SELECT ステートメントの FROM 句で有効です。実際の構文は次のとおりです。

SELECT ... FROM (サブクエリ) [AS] 名前 ...

[AS] name 句は必須です。FROM 句のすべてのテーブルに名前が必要だからです。

したがって、基本的に、結果のテーブルに名前を付けて、外側のクエリでテーブル自体として使用できます。

それが役立つことを願っています:)

于 2013-08-07T22:23:24.483 に答える
1

FROMこのクエリは、クエリの句でサブクエリを使用しています。サブクエリは、クエリの残りの部分でテーブルとして使用される一連の行を返します。MySQL では、この「仮想テーブル」に別名を付けることが必須です。

具体的には、名前groupmembershipsは次の結果セットを指します

   SELECT
       GROUP_CONCAT( g.name SEPARATOR'-groupsep-' )
   FROM
       groups g, group_memberships gm
   WHERE
       g.ID = gm.group
       AND gm.user = u.ID

より詳細な説明は、FROM 句のサブクエリに関する MySQL ドキュメントにあります。

于 2013-08-07T22:21:11.110 に答える
0

サブクエリの結果の列名です。言うまでもなく

Select V1,V2,(V1 + V2) As Total From SomeTableOfVs
于 2013-08-07T22:21:13.893 に答える