使用 LambdaQueryWrapper 来实现 SELECT * FROM sys_customer_order a JOIN(SELECT * FROM sys_order WHERE TO_DAYS(in_time) = TO_DAYS('2023-06-22') AND homestay_id = 2 ) b on a.order_Id = b.id AND a.is_delete = 0
时间: 2024-02-20 17:58:13 浏览: 59
Event filter with query SELECT * FROM __InstanceModificationEvent WITHIN
可以按照如下方式使用 LambdaQueryWrapper 来实现所需的 SQL 查询:
```
// 构造内部查询条件
LambdaQueryWrapper<Order> innerWrapper = new LambdaQueryWrapper<>();
innerWrapper.eq(Order::getHomestayId, 2)
.apply("TO_DAYS(in_time) = TO_DAYS('2023-06-22')");
// 构造外部查询条件
LambdaQueryWrapper<CustomerOrder> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CustomerOrder::getIsDelete, 0)
.inSql(CustomerOrder::getOrderId, "SELECT id FROM sys_order WHERE " + innerWrapper.getSqlSegment())
.last("INNER JOIN sys_order b ON a.order_Id = b.id");
// 进行查询
List<CustomerOrder> result = customerOrderMapper.selectList(wrapper);
```
其中,innerWrapper 是用于构造内部查询条件的 LambdaQueryWrapper 对象,通过 eq 方法设置 homestayId 的值为 2,使用 apply 方法添加 TO_DAYS 函数的条件,来筛选出符合条件的 sys_order 表中的记录。
在外部查询条件中,使用 inSql 方法来设置 orderId 的值,其中的 SQL 语句是利用 innerWrapper 的 getSqlSegment 方法来获取内部查询条件的 SQL 片段,从而实现对内部查询结果的引用。last 方法用于添加 JOIN 的条件。
最后,使用 selectList 方法来进行查询,返回结果为符合条件的 CustomerOrder 对象的列表。
阅读全文