影刀RPA 影刀中的SQL查询大全:从简单查询到多表联查
📅 2026/7/15 5:33:56
👁️ 阅读次数
📝 编程学习
影刀RPA 影刀中的SQL查询大全:从简单查询到多表联查
作者:林焱
影刀内置了SQLite指令,但很多新手只会最简单的SELECT *。这篇把RPA场景中最常用的SQL语句整理出来——不是数据库教科书,而是你在写影刀流程时打开就能抄的速查表。
基础查询
-- 查全部SELECT*FROMproducts;-- 查特定列SELECTname,priceFROMproducts;-- 条件筛选SELECT*FROMproductsWHEREprice>100;-- 多条件SELECT*FROMproductsWHEREprice>100ANDstock>0;SELECT*FROMproductsWHEREcategory='数码'ORcategory='家电';-- 模糊搜索SELECT*FROMproductsWHEREnameLIKE'%手机%';-- 排序SELECT*FROMproductsORDERBYpriceDESC;-- 降序SELECT*FROMproductsORDERBYsalesASC;-- 升序-- 取前N条SELECT*FROMproductsORDERBYsalesDESCLIMIT10;聚合统计
-- 计数SELECTCOUNT(*)FROMorders;SELECTcategory,COUNT(*)ascntFROMproductsGROUPBYcategory;-- 求和SELECTSUM(amount)FROMordersWHEREdate>='2024-06-01';-- 平均值SELECTAVG(price)FROMproductsWHEREcategory='数码';-- 最大值/最小值SELECTMAX(price),MIN(price)FROMproducts;[video(video-9wo1KKmt-1784060842079)(type-csdn)(url-https://live.csdn.net/v/embed/526818)(image-https://v-blog.csdnimg.cn/asset/582d14c3bd0451c5399cd990b56e2a0d/cover/Cover0.jpg)(title-拼多多店群自动化报活动上架!)]-- 分组统计(RPA最常用)SELECTcategory,COUNT(*)astotal,AVG(price)asavg_price,SUM(stock)astotal_stockFROMproductsGROUPBYcategoryHAVINGtotal>5-- 只显示商品数大于5的分类ORDERBYtotalDESC;去重与数据清洗
-- 查重复数据SELECTname,COUNT(*)ascntFROMproductsGROUPBYnameHAVINGcnt>1;-- 去重查询SELECTDISTINCTcategoryFROMproducts;-- 找NULL值SELECT*FROMproductsWHEREpriceISNULL;SELECT*FROMproductsWHEREdescriptionISNULLORdescription='';-- 替换NULLSELECTname,COALESCE(price,0)aspriceFROMproducts;多表联查
-- 内连接:只返回两表都匹配的SELECTo.order_id,p.name,o.quantityFROMorders oINNERJOINproducts pONo.product_id=p.id;-- 左连接:返回左表全部,右表没匹配的填NULLSELECTp.name,o.order_idFROMproducts pLEFTJOINorders oONp.id=o.product_id;-- 子查询SELECTname,priceFROMproductsWHEREprice>(SELECTAVG(price)FROMproducts);-- 联合查询(两个表结构相同,上下拼接)SELECTname,priceFROMproducts_2023UNIONALLSELECTname,priceFROMproducts_2024;数据操作(增删改)
-- 插入INSERTINTOproducts(name,price,stock)VALUES('新产品',99.00,50);-- 批量插入(影刀采完数据后写入)INSERTINTOdaily_sales(date,product,sales)VALUES('2024-06-26','商品A',100),('2024-06-26','商品B',85);-- 更新UPDATEproductsSETprice=129.00WHEREid=1;-- 条件更新UPDATEproductsSETstock=stock-1WHEREidIN(1,2,3);-- 删除DELETEFROMproductsWHEREstock=0;-- 清空表(保留结构)DELETEFROMtemp_data;RPA场景常用SQL
-- 增量更新:新数据插入,冲突则更新INSERTORREPLACEINTOproducts(id,name,price)VALUES(1,'商品A',99.00);-- 查今天的记录SELECT*FROMordersWHEREdate=DATE('now');-- 查最近7天SELECT*FROMordersWHEREdate>=DATE('now','-7 days');-- 查本月SELECT*FROMordersWHEREstrftime('%Y-%m',date)=strftime('%Y-%m','now');-- 数据对比:昨天和今天的差异SELECTtoday.product,today.sales-yesterday.salesaschangeFROMdaily_sales todayLEFTJOINdaily_sales yesterdayONtoday.product=yesterday.productANDyesterday.date=DATE('now','-1 days')WHEREtoday.date=DATE('now');踩坑实录
坑1:SQLite的日期函数和其他数据库不同
MySQL用NOW(),SQLite用DATE('now')。DATE_ADD在SQLite中不存在,用DATE('now', '+7 days')。
坑2:字符串拼接用 || 而不是 +
SELECT '商品' || name FROM products;对。SELECT '商品' + name会得到数字0。
坑3:SQLite的LIKE默认不区分大小写(英文字母)
TEMU店群矩阵自动化运营核价报活动
WHERE name LIKE 'apple%'能匹配 “Apple” 也匹配 “apple”。但中文字符是区分大小写的(虽然中文没有大小写)。
坑4:sqlite3默认自动提交
影刀的SQLite执行完INSERT/UPDATE/DELETE自动提交,不需要手动commit。但如果用Python的sqlite3模块,每次修改后需要conn.commit()。
坑5:大量写入时性能低
SQLite一次INSERT一条在循环里会很慢。用executemany()批量插入,速度提升几十倍:
data=[(1,'A',99),(2,'B',199),...]cursor.executemany("INSERT INTO products VALUES (?,?,?)",data)写在最后
SQL是RPA数据处理的基本功。90%的数据操作SQL都能搞定,不需要写Python循环去处理列表。掌握上述SQL语句,你就不需要为了"按分类统计"或"查重复数据"去写一堆Python代码了。
编程学习
技术分享
实战经验