天天看点

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