SQL中联表的运用

当出现要大量数据去查询时,不要一个个去SQL查询,应该要批量的去查询。

def batch_cavity_query(self, fuseids):

"""批量查询cavity信息"""

if not fuseids:

return {}

复制代码
# 创建临时表批量查询
try:
    # 创建临时表
    self.cursor.execute("CREATE TABLE #TempFuseIDs (fuseid VARCHAR(100))")
    # 批量插入数据
    self.cursor.executemany("INSERT INTO #TempFuseIDs VALUES (%s)", [(fid,) for fid in fuseids])

    query = """
    SELECT 
        DA.qrc_fuseid,
        C.Barcode AS QRcode,
        L.qrc_fuseid AS LensData_FuseID,
        C.Cavity
    FROM #TempFuseIDs temp
    LEFT JOIN A DA
        ON temp.fuseid = DA.qrc_fuseid
    LEFT JOIN B L
        ON DA.qrc_QRcode = L.qrc_QRcode
    LEFT JOIN C C
        ON L.qrc_fuseid = C.Barcode
    """
    self.cursor.execute(query)
    results = self.cursor.fetchall()

    # 构建映射字典
    cavity_map = {}
    for row in results:
        fuseid = row[0]
        cavity_map[fuseid] = (row[1], row[2], row[3])

    return cavity_map
finally:
    self.cursor.execute("DROP TABLE #TempFuseIDs")
python 复制代码
def batch_query_sn(self, fuseids):
    """批量查询SN相关信息"""
    if not fuseids:
        return {}
复制代码
try:
    # 创建临时表
    self.cursor.execute("CREATE TABLE #TempFuseIDs (fuseid VARCHAR(100))")
    self.cursor.executemany("INSERT INTO #TempFuseIDs VALUES (%s)", [(fid,) for fid in fuseids])

    query = """
    SELECT 
        temp.fuseid,
        eqp_name,
        station_code,
        TRY_CAST(testres_main_test_recordposition3_ut_z AS FLOAT) - 
        TRY_CAST(testres_main_test_recordposition2_ut_z AS FLOAT) AS offset,
        time
    FROM #TempFuseIDs temp
    LEFT JOIN D  AA
        ON AA.sensor_id = temp.fuseid
    """
    self.cursor.execute(query)
    results = self.cursor.fetchall()

    sn_map = {}
    for row in results:
        fuseid = row[0]
        sn_map[fuseid] = (row[1], row[2], float(row[3]) if row[3] else 0, row[4])

    return sn_map
finally:
    self.cursor.execute("DROP TABLE #TempFuseIDs")
复制代码
相关推荐
广州灵眸科技有限公司5 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手7 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学7 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh9 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z1234567898610 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD10 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo11 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
TlSfoward11 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记12 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发12 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序