sql语法-大量商品的统计(求最快最好的方法)

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:49:59
表名: stock(储存品)

字段名: id(编号) name(商品名) num(数量)
字段类型: int varchar int

我要实现每统计一件商品时,先select查询数据中是否存在同名商品?
如果有同名商品,则update数量+1。如果不存在,侧insert插入条新数据

有什么最好的语法能让这个步凑,变得更快,更简单?

注:是不是要用子查询啊?小妹太笨咯不懂这个
哦 我忘了说 我的是sqlserver2000

CREATE OR REPLACE PROCEDURE ADD_ITEM(ITEM_NAME VARCHAR) AS
DECLARE
ITEM_NUM INT;
BEGIN
SELECT COUNT(ID) INTO ITEM_NUM FROM STOCK WHERE NAME=ITEM_NAME;
IF ITEM_NAME>0 THEN
UPDATE STOCK SET NUM=NUM+1 WHERE NAME=ITEM_NAME;
ELSE
INSERT INTO STOCK(NAME,NUM) VALUES(ITEM_NAME,1); --这里假设id列自增
END IF;
END;

创建存储过程之后,在程序中只要每次执行:CALL ADD_ITEM('新商品名');
就可以了

如果数据量非常大,可以在stock的name列上建立一个索引

SQLSERVER的话,语法需要稍作修改。