天天看點

php中多表查詢語句,php多表查詢之子查詢語句_後端開發

php sql子查詢語句就是先經由過程一個語句來查詢出一個結果,然後再經由過程一個查詢語句從這個結果中再次查詢,語句如“select max(goods_id),cat_id,goods_name from goods group by cat”。

php中多表查詢語句,php多表查詢之子查詢語句_後端開發

引薦:《PHP視訊教程》

所謂子查詢語句,就是先經由過程一個語句來查詢出一個結果,然後再經由過程一個查詢語句從這個結果中再次查詢。子查詢語句平常有以下3種。下面以一個案例來做解說。

案例:查詢【例1】中每一個分類下的最新的那一條商品資訊。

php中多表查詢語句,php多表查詢之子查詢語句_後端開發

假如經由過程單句查詢,是獵取不到的。如下面如許是毛病的:

select max(goods_id),cat_id,goods_name from goods group by cat_id;

如許獵取到了每一個分類的最新商品ID号goods_id,然則别的資訊如goods_name商品名稱倒是舊的那一條。是以,要想獵取到每一個分類的最新商品資訊,要麼離開語句查詢,要麼用子查詢。

1:where子查詢語句。

select * from goods where goods_id in ( select max(goods_id) from goods group by cat_id);

這句代碼,我們先用group by查詢出每一個分類的最新的商品ID,然後經由過程where...in () 前提語句查詢出每一個分類最新商品ID 的商品的資訊。這裡是把group by語句作為where的子查詢語句。

2:from子查詢語句。

select * from (select * from goods order by cat_id,goods_id desc) as gk group by cat_id;

From子查詢就是把 select查詢到的結果作為一張表,如上面加粗的代碼。注:必需把select查詢到的結果集 取一個别号,如上面代碼中的赤色部份。不然會報錯。

如許,我們一樣查詢出了每一個分類下最新商品的資訊。

3:exists子查詢語句:

題目:查詢【例1】哪些欄目下有商品。分類表名:category

select * from category where exists( select * from goods where goods.cat_id=category.cat_id )

上句中的exists排查了(當商品表中的分類ID=分類表中的分類ID)時,有無商品。假如有,就再查詢這個分類的資訊,如查沒有,就消除這個分類。末了結果就是,查詢出了有商品的商品分類資訊。

嗯,這裡我們引見了3種比較經常運用的mysql資料庫子查詢語句:where子查詢語句、from子查詢語句、exists子查詢語句。固然,假如你不想運用子查詢語句,也能夠把它們拆分紅2個語句來實行,結果也是一樣的。

以上就是php多表查詢之子查詢語句的細緻内容,更多請關注ki4網别的相幹文章!

收藏 | 0