1.mysql 查询语句中设置变量
SELECT id INTO @img_id FROM item_img WHERE item_id=‘1’ AND img_url =‘1’;
2.mysql 查看变量数据
SELECT @img_id
3. mysql 判断数据是否存在 如果不存在则添加 如果存在则修改 函数 ON DUPLICATE KEY UPDATE
INSERT INTO item_img ( img_url, item_id, ca_id)
VALUES
( ‘1’,@item_id ,@category_id)
ON DUPLICATE KEY UPDATE
img_url = ‘11’,
item_id = @item_id,
ca_id = @category_id ;
@item_id 和 @category_id为之前设置的变量
4.mysql 如何指定参数之间的分隔符
使用函数CONCAT_WS()。使用语法为:CONCAT_WS(separator,str1,str2,…)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
set @prop_value_arr = NULL;
set @prop_value_arr = CONCAT_WS(’,’,@prop_value_arr,11);
set @prop_value_arr = CONCAT_WS(’,’,@prop_value_arr,22);
输出
select @prop_value_arr 为 11,22
5.mysql 在不能添加索引不能使用 ON DUPLICATE KEY UPDATE 情况下 判断数据是否存在 如果不存在则添加 如果存在则修改
解决方式: 添加储存过程
例如:
// 添加储存过程(函数)
create procedure getItems(shop_id_val int(11), title_val varchar(64), remark_val varchar(128))
BEGIN
declare item_id_val float;
SELECT item_id into item_id_val FROM me_item where shop_id=shop_id_val AND title = title_val;
if item_id_val is NULL then
SELECT 1;
INSERT INTO me_item(shop_id, title,remark) VALUES(shop_id_val, title_val, remark_val);
else
SELECT 2;
UPDATE me_item SET shop_id = shop_id_val, title = title_val, remark=remark_val WHERE title=title_val;
end if;
END;
// 删除储存过程如果存在则删除(函数)
drop procedure if exists getItemsImg;
// 调用储存过程(函数)
CALL getItems(100,‘标题4’,‘备注6’);