- 1.MySql表delete语句支持别名的写法:
delete m from mgmt_entity_assoc as m where 1=1 and m.mgmt_entity_assoc_type_id='DEPLOY' and m.mgmt_entity_id_to='46962'
- 2.mysql存储过程
delimiter $$
use `md_test`$$
drop procedure if exists `clearData`$$
create definer=`root`@`%` procedure `clearData`(in entity_type varchar(20))
begin
declare sql_str varchar(2000);
declare sql_or varchar(2000);
# 删除 mgmt_entity_attribute
set sql_str ='delete from mgmt_entity_attribute where mgmt_entity_id in ( select MGMT_ENTITY_ID from mgmt_entity where mgmt_entity_type_id =';
#注意四个单引号表示一个一引号
set sql_str=concat(sql_str,'''',entity_type,''')') ;
set @delSql = sql_str;
prepare stmt from @delSql;
execute stmt;
end $$
delimiter ;
调用存储过程
#调用
call clearData('VHOST');
#调用带有出参的存储过程
set @outp = '';
call clearData('VHOST',@outp);-- 清除数据库
select @outp
- MySql时间函数
mysql有几个时间函数now()、CURDATE()、CURTIME(),可以用来插入当前时。
NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以直接存到DATE字段中。
CURTIME()以'HH:MM:SS'的格式返回当前的时间,可以直接存到TIME字段中。
NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以直接存到DATE字段中。
CURTIME()以'HH:MM:SS'的格式返回当前的时间,可以直接存到TIME字段中。
以now()函数为例: insert into tablename (fieldname) values (now())
3.mysql删除数据问题
下面这个sql 会报 :错误代码: 1093
You can't specify target table 'mgmt_entity' for update in FROM clause
原因是:不能先select出同一表中的某些值,再update/delete这个表(在同一语句中)