了解复杂的SQL查询

时间:2013-10-12 02:43:29

标签: sql

我的SQL很差,当我在下面得到一个SQL查询时,我对其中的ab感到非常困惑。它们在查询中的作用是什么?它的功能或结果是什么?

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

1 个答案:

答案 0 :(得分:1)

ab是别名 - 在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>