You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求SQLite查询语句:获取剩余库存及销售表无对应库存的商品

嘿,这两个SQLite查询需求我帮你梳理好了,直接看具体实现:

1. 查询当前剩余库存

假设你的stock表包含product_name(商品名称)和initial_stock(初始库存数量)字段,sales表包含product_name(商品名称)和sales_quantity(单次销售数量)字段。剩余库存的逻辑是初始库存减去该商品的累计销量,对应的SQL语句如下:

SELECT 
    s.product_name,
    s.initial_stock - COALESCE(SUM(sa.sales_quantity), 0) AS remaining_stock
FROM stock s
LEFT JOIN sales sa ON s.product_name = sa.product_name
GROUP BY s.product_name, s.initial_stock;

这里用LEFT JOIN是为了确保那些没有销售记录的商品也能被统计到(此时累计销量为0),COALESCE函数用来处理NULL值,避免出现计算错误。

2. 查询sales表中存在但stock表中不存在的商品名称

这个需求可以通过两种常用方式实现,你可以根据自己的习惯选择:

方法一:使用LEFT JOIN + IS NULL

SELECT DISTINCT sa.product_name
FROM sales sa
LEFT JOIN stock s ON sa.product_name = s.product_name
WHERE s.product_name IS NULL;

LEFT JOIN会保留sales表的所有记录,当stock表中没有匹配的商品时,对应的stock字段会是NULL,通过筛选这个NULL值就能得到目标商品。加上DISTINCT是为了避免重复的商品名称。

方法二:使用NOT EXISTS子查询

SELECT DISTINCT product_name
FROM sales sa
WHERE NOT EXISTS (
    SELECT 1 
    FROM stock s 
    WHERE s.product_name = sa.product_name
);

这种写法逻辑更直观:找到sales表中,在stock表中找不到对应商品名称的记录,同样用DISTINCT去重。

内容的提问来源于stack exchange,提问作者Ramakanta Chandra

火山引擎 最新活动