php中多表查询语句,php多表查询之子查询语句_后端开发

php sql子查询语句就是先经由过程一个语句来查询出一个结果,然后再经由过程一个查询语句从这个结果中再次查询,语句如“select max(goods_id),cat_id,goods_name from goods group by cat”。

7704097a7db86ef4fa79ae41385f8670.png

引荐:《PHP视频教程》

所谓子查询语句,就是先经由过程一个语句来查询出一个结果,然后再经由过程一个查询语句从这个结果中再次查询。子查询语句平常有以下3种。下面以一个案例来做解说。

案例:查询【例1】中每一个分类下的最新的那一条商品信息。

753e1b94c8b0ce5ceea79570b0dd0159.png

假如经由过程单句查询,是猎取不到的。如下面如许是毛病的:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值