私は SQL が苦手で、以下の SQL クエリを取得したとき、その中のa
andについて非常に混乱b
しました。クエリでの役割は何ですか?また、その機能または結果は何ですか?
SELECT *,(SELECT COUNT(id) FROM abc_menu b WHERE b.parentId=a.id ) FROM abc_menu a ORDER BY ordering ASC
私は SQL が苦手で、以下の SQL クエリを取得したとき、その中のa
andについて非常に混乱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
。