sql查询语句中关于as的用法;

目前正在自学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 (别名) 应该用到何处,怎么用呢,谢谢!!!

阅读 6k
2 个回答

鉴于你只贴出了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一般是给查询的字段或者一张定义别名,字段就不多说了,表的用法提一下

select * from (select * from [Table] where xxx) as newTable --此时就可以用as,而且可以省略

查询中给字段加别名
select cat_id, goods_name as gname from goods
给表加别名
select cat_id, goods_name from goods as g where g.cat_id > 1

select g.cat_id, g.goods_name, g.price as base_price, T.price as max_price from goods as g
left join (
 select gid, max(price) as price from order_good group by gid
) as T on g.id = T.gid

PS:SQL都是随便写的, 不一定对

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题