1,更新,根据一个表更新另一个表,比如批量同步外键
方法一:
update 更新表 set 字段 = (select 参考数据 from 参考表 where 参考表.id = 更新表.id);
update table_2 m set m.column = (select column from table_1 mp where mp.id= m.id);
方法二:
update table_1 t1,table_2 t2 set t1.column = t2.column where t1.id = t2.pid;
2,视图,把相同字段的表合起来
SELECT `b`.`Id` AS `Id`,`b`.`状态` AS `状态` FROM `培训体系之部门培训` `b` UNION
SELECT `c`.`Id` AS `Id`, `c`.`状态` AS `状态` FROM `培训体系之安全培训` `c` UNION
SELECT `d`.`Id` AS `Id`, `d`.`状态` AS `状态` FROM `培训体系之理念培训` `d`;
3,触发器,更新订单表的状态时,同时根据订单号更新订单明细表的状态
条件【触发:After;插入[ ],更新[√],删除[ ]】
BEGIN
if(new.状态='新') then
update 销售订单明细 set 状态='新' where 订单号=new.订单号 and 状态<>'删除';
end if;
END
4,触发器,更新一个时间戳
条件【触发:Before;插入[ ],更新[√],删除[ ]】
BEGIN
if(new.仓库(箱)!=old.仓库(箱) or new.车间(箱)!=old.车间(箱) ) then
set NEW.更新时间= set new.签到时间=DATE_FORMAT(NOW(),'%x-%m-%d %H:%i:%s');;
end if;
END
5,触发器,获取刚刚添加记录的自增id
条件【触发:After;插入[√ ],更新[],删除[ ]】
new.id
6,查询,分组查询,关键字用逗号隔开
select class_id, group_concat(name) frome student group by class_id;
7,查询,查重
SELECT 某列A,COUNT(*) FROM 表名 GROUP BY 某列A HAVING COUNT(*) > 1//查看重复数据的条数
8,去重,从口袋助理的app里导入自己的系统一些客户资料,但是客户名重复了,需要删除。
UPDATE `销售客户资料`,
(
SELECT
count(客户名称) AS c,
客户名称,
是否口袋导入
FROM
`销售客户资料`
GROUP BY
客户名称
HAVING
c > 1
) tmp
SET `销售客户资料`.状态 = '删除'
WHERE
`销售客户资料`.客户名称 = tmp.客户名称
AND `销售客户资料`.是否口袋导入 = '是'
AND `销售客户资料`.客户编码 != '';