0

私は SQL が苦手で、以下の SQL クエリを取得したとき、その中のaandについて非常に混乱bしました。クエリでの役割は何ですか?また、その機能または結果は何ですか?

SELECT *,(SELECT COUNT(id) FROM abc_menu b WHERE b.parentId=a.id ) FROM abc_menu a ORDER BY ordering ASC
4

1 に答える 1

1

aおよびbは別名です。SQL では、これらは table-name の直後 (FROM または JOIN 句内) または column/ または select-expression の後に宣言されます。

SELECT *, (
    SELECT COUNT(id) FROM abc_menu b WHERE b.parentId=a.id) 
FROM abc_menu a 
ORDER BY ordering ASC

ここでは、テーブルへの「最も外側の」アクセスが としてエイリアス化されている (このステートメント内で名前が付けられている) ことがわかりますa

これにより、子をカウントするためのサブクエリと区別されます。サブクエリは、別のエイリアスとして同じテーブルを参照しますb

参照する行bは、参照する行から論理的に独立しておりa、論理的に指定されたとおりにのみ接続されます。ここでは、サブクエリの WHERE 句によって接続されますb.parentId=a.id

于 2013-10-12T04:27:02.247 に答える