鍍金池/ 問答/數(shù)據(jù)庫(kù)/ sql查詢語句中關(guān)于as的用法;

sql查詢語句中關(guān)于as的用法;

目前正在自學(xué)mysql,在查詢的時(shí)候,有時(shí)候需要用到 as 別名,但下邊的兩個(gè)查詢語句添加上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 別名,為什么會(huì)出現(xiàn)錯(cuò)誤呢?

2、select hid,tname,gid,mres,mtime from (m left join t on t.tid = m.hid) as 別名; ,也會(huì)出現(xiàn)錯(cuò)誤呢,

3、如果這兩個(gè)查詢語句 把后面的 as 別名 取得,則不在出現(xiàn)錯(cuò)誤,這是為什么呢?

4、究竟 as (別名) 應(yīng)該用到何處,怎么用呢,謝謝!??!

回答
編輯回答
吃藕丑

查詢中給字段加別名
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都是隨便寫的, 不一定對(duì)

2018年4月9日 09:09
編輯回答
墨小白

鑒于你只貼出了sql語句、所以我就照著你所見的語法在本地還原了一下、下面一一為你解答

1.第一句sql你用了where in (),它后面跟的是一個(gè)數(shù)據(jù)的集合,(select max(shop_price) from goods group by cat_id)這句是沒有錯(cuò)的,但是當(dāng)你加上as就報(bào)錯(cuò)了。為什么呢?因?yàn)閯偛乓舱f了where in 后面跟的是一個(gè)數(shù)據(jù)集合,而你現(xiàn)在要做的是給這個(gè)集合定義一個(gè)別名,就相當(dāng)于是一張表了,肯定是不對(duì)的。

2.第二句就更離譜了,明顯直接語法錯(cuò)誤,from后面是跟一張表,as定義新表名原本沒有錯(cuò),但你()內(nèi)的sql并不是查詢出的一張表數(shù)據(jù),而是銜接上文的,當(dāng)然會(huì)報(bào)錯(cuò)。

3.as 別名 取得我想你是打錯(cuò)字了吧,是去掉,去掉as當(dāng)然不會(huì)報(bào)錯(cuò),原本就是你語法錯(cuò)了。

4.as一般是給查詢的字段或者一張定義別名,字段就不多說了,表的用法提一下

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

2017年10月6日 13:00