当前位置: 首页 > news >正文

SQLAlchemy的子查询subquery()

subquery() 是 SQLAlchemy 提供的一种查询方式,允许你在主查询中嵌入子查询。它允许我们执行更复杂的查询,例如在主查询中使用嵌套的查询结果,进行多层次的筛选、聚合或者关联操作。

1. 子查询(Subquery)概述

子查询是一个嵌套的查询,它作为一个临时的结果集参与到主查询中。
子查询常用于:

  • 在主查询中使用复杂的筛选条件
  • 执行聚合操作,并在主查询中引用
  • 提高查询性能(尤其在需要多次查询同一个数据时)

2. 基本语法和使用

子查询的基本语法是通过构建一个子查询对象,并将其作为主查询的一部分来使用

  • 子查询返回的列可以使用 .c 来访问,就像普通的 SQLAlchemy 查询对象一样
  • 可以为子查询中的列指定别名,以便在主查询中清晰地引用

demo.py

在这里插入图片描述

SELECT 
admin_report.admin_report_uuid, 
admin_report.admin_report_title, 
admin_report.admin_report_theme_id, 
admin_report.admin_report_link, 
admin_report.create_time, 
admin_report.update_time, 
admin_report.admin_report_type_id, 
admin_report.admin_report_id, 
admin_report.is_download, 
anon_1.department_list
FROM admin_report 
JOIN admin_theme ON admin_theme.admin_theme_id = admin_report.admin_report_theme_id 
JOIN (SELECT admin_report_department_r.admin_report_id AS admin_report_id, string_agg(CAST(admin_report_department_r.department_id AS VARCHAR), ',') AS department_list
FROM admin_report_department_r
WHERE admin_report_department_r.del_flag = 0 GROUP BY admin_report_department_r.admin_report_id) AS anon_1 ON anon_1.admin_report_id = admin_report.admin_report_id
WHERE admin_report.create_time >= '2024-06-08T16:00:00.000Z' AND admin_report.create_time <= '2025-06-09T15:59:59.999Z' ORDER BY admin_report.create_time DESC

在这里插入图片描述

http://www.dtcms.com/a/240559.html

相关文章:

  • 【100%完美解决】jupyter无法导入已安装的包【notebook中无法import安装在虚拟环境的包】
  • 华为云Flexus+DeepSeek征文 | 基于Dify构建网站智能客服
  • STM32嵌套向量中断控制器(NVIC)及外部中断使用案例分析
  • python Day46 学习(日志Day15复习)
  • ETS5430:多通道高性能汽车以太网接口卡
  • 【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
  • uniapp获取当前位置和经纬度信息
  • C++之list的自我实现
  • Conda 创建新环境时报错 HTTP 502,如何解决?
  • ava多线程实现HTTP断点续传:原理、设计与代码实现
  • 微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
  • SSL证书为什么会有有效期?
  • Hugging Face、魔塔社区(MOTA)与OpenRouter:AI模型平台深度对比与实战指南
  • 一元线性回归分析——基于Rstudio
  • 深入浅出Diffusion模型:从原理到实践的全方位教程
  • 2.1 状态空间表达式
  • linux 下常用变更-8
  • 24CJ87-4天窗标准图集|采光、通风、消防排烟天窗
  • 华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建自己的AI-Agent
  • 【如何做好技术架构】
  • 【2D与3D SLAM中的扫描匹配算法全面解析】
  • 【性能篇II】释放主线程:异步任务(@Async)与定时任务(@Scheduled)
  • C++中vector类型的介绍和使用
  • SpringCloud微服务架构下的日志可观测解决方案(EFK搭建)
  • IBMS集成系统 结合数字孪生技术,实现建筑的3D可视化监控与智能化运维
  • K6 + JavaScript 压测服务端
  • Kaspa Wasm SDK
  • 专业文件比对辅助软件
  • Vue3学习(接口,泛型,自定义类型,v-for,props)
  • ubuntu服务器上极简部署odoo18