目前正在自学mysql,在查询的时候,有时候需要用到 as 别名,但下边的两个查询语句添加上as 别名后,为什么不正确了呢;
1、select cat_id,goods_name,shop_price from goods where shop_price in (select max(shop_price) from goods group by cat_id) as 别名,为什么会出现错误呢?
2、select hid,tname,gid,mres,mtime from (m left join t on t.tid = m.hid) as 别名; ,也会出现错误呢,
3、如果这两个查询语句 把后面的 as 别名 取得,则不在出现错误,这是为什么呢?
4、究竟 as (别名) 应该用到何处,怎么用呢,谢谢!!!
鉴于你只贴出了sql语句、所以我就照着你所见的语法在本地还原了一下、下面一一为你解答
1.第一句sql你用了
where in ()
,它后面跟的是一个数据的集合,(select max(shop_price) from goods group by cat_id)
这句是没有错的,但是当你加上as
就报错了。为什么呢?因为刚才也说了where in
后面跟的是一个数据集合,而你现在要做的是给这个集合定义一个别名,就相当于是一张表了,肯定是不对的。2.第二句就更离谱了,明显直接语法错误,
from
后面是跟一张表,as
定义新表名原本没有错,但你()
内的sql并不是查询出的一张表数据,而是衔接上文的,当然会报错。3.
as 别名 取得
我想你是打错字了吧,是去掉
,去掉as
当然不会报错,原本就是你语法错了。4.
as
一般是给查询的字段
或者一张表
定义别名,字段就不多说了,表的用法提一下