我的SQL很差,当我在下面得到一个SQL查询时,我对其中的a
和b
感到非常困惑。它们在查询中的作用是什么?它的功能或结果是什么?
SELECT *,(SELECT COUNT(id) FROM abc_menu b WHERE b.parentId=a.id ) FROM abc_menu a ORDER BY ordering ASC
答案 0 :(得分:1)
a
和b
是别名 - 在SQL中,这些是在表名后面(在FROM或JOIN子句中)或在列/或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
。< / p>