MySQL嵌套查询中var1的含义及使用原因咨询
关于MySQL子查询中var1的疑问解答
先看你给出的SQL语句:
SELECT * FROM (SELECT * FROM customer ORDER BY id DESC LIMIT 20)var1 ORDER BY id ASC;
1. var1是什么?
对的,var1就是这个子查询的别名。MySQL有个硬性要求:所有被当作临时表来用的子查询(也就是外层查询把它当数据源的子查询),必须给它指定一个别名,哪怕这个别名后续不会被用到。
2. 为什么要用var1?
这条SQL的逻辑是先从customer表里按id倒序抓最新的20条数据,再把这20条按id正序排好输出。
里面的括号部分(SELECT * FROM customer ORDER BY id DESC LIMIT 20)会生成一个临时的结果集,MySQL需要给这个临时结果集起个名字(也就是别名),这样外层查询才能识别它是自己要查的数据源。你完全可以把var1换成别的合法名称,比如t、temp_cust,效果都一样——它就是个满足MySQL语法要求的临时标识而已。
内容的提问来源于stack exchange,提问作者iiprateek
相关产品推荐
相关产品推荐

