For the complete documentation index, see llms.txt. This page is also available as Markdown.

sql查询子表状态全部完成的数据

这种需求你们都是怎么写sql的

举例来说有个订单表里面有5个订单

然后还有一个运单表

每个订单下可能有不同数量的运单

运单有一个状态是0和1

0代表未完成

一代表已完成

现在需求是把订单2和订单4查出来

因为他们下面

所有的运单都已经完成了

我们来看一下

好这个是单独查订单表有5条数据

那我们把运单也关联进来

我们用 left join

好然后我们也不需要这么多参数

只看

订单 id 和

运单状态

大家看:这数据就多了

一共12条数据

跟这个是一样的

那接下来呢

我们要想办法把订单2和订单4

查出来首先我们加一个分组

跟 rope by 我们按照订单 id 分组

也就是说同一个订单的运单放在一组

然后呢我们来看一下他们的数量

cut 星

接下来呢我们要想办法把

第二个订单和第四个订单找出来

那怎么找呢

我们可以利用他的这个状态值

让我们来看一下前三个订单(口误:运单)

大家看他们的 status 相加总和

他就是一

那第二个订单(的4个运单)呢

他们的 status 相加总和是4

正好跟他的数量是一样的

我们来看一下

sum bt.status

这里边只有2号和4号

他们的数量和他们的sum正好相等

所以呢我们可以用having

count *

等于 sum

bt.status

好我们再来看一下

大家看:只查出了2号和4号两个订单

也就是说:我们按照订单分组

然后取他们运单状态的总和

如果等于他们运单的数量

那我们就把这条数据筛出来

所以这块,如果我们还需要其他参数

比如:订单编号

我们可以把这些参数加进来

订单地址

那我们也可以在这查出来

好这样就可以了

最后更新于