私は 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
私は 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
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。