UPDATE t_user as t1
INNER JOIN t_employee t2 ON t2.user_id = t1.id and t2.company_id = t1.company_id
SET t1.STATUS = 20,t1.version_disable_mark = 0
where t1.version_disable_mark = 1 and t1.company_id = 111100000000 and user_type = 1
LIMIT 10
下面转转自:http://blog.csdn.net/FansUnion/article/details/52130365
项目中,评论数,关注数等数据,是实时更新的。+1,-1 这种。
有的时候,可能统计不准确。
需要写一个统计工具,更新校准下。
用Java写SQL和函数,代码很清晰,方便扩展,但是太慢了。
为了简单起见,只写sql来统计,然后更新。(不想写存储过程)
语句如下:
参考资料
1. MySQL跨表更新 多表update sql语句总结
http://www.jb51.NET/article/32648.htm
2.如何将select出来的部分数据update到另一个表里面?
http://bbs.csdn.net/topics/320233666
如果更新多个字段,如何做呢?
比如:t_order表有两个字段:sale_user_id 和 sale_user_name,需要从t_customer和t_employee中获取数据。sql如下:
UPDATE t_order t3,(
select t1.user_id,t1.real_name
FROM t_employee t1
INNER JOIN t_customer t2 on t1.id = t2.employee_id
where t2.self_company_id = 81188254143000 and t2.company_id = 82893615351000 and t2.deleted = 0
) as t4
SET t3.sale_user_id = t4.user_id,t3.sale_user_name = t4.real_name
where t3.id in( 82895043404000,82895085973000);
CREATE TABLE `t_customer` (
`id` bigint(20) NOT NULL COMMENT '主键',
`company_name` varchar(255) DEFAULT NULL COMMENT '公司名称',
`company_abbreviate` varchar(255) DEFAULT NULL COMMENT '公司简称',
`linkman` varchar(255) DEFAULT NULL COMMENT '联系人',
`telephone` varchar(20) DEFAULT NULL COMMENT '手机号',
`area_id` bigint(20) DEFAULT NULL COMMENT '区域ID',
`detail` varchar(255) DEFAULT NULL COMMENT '详细地址',
`purchase_goods` varchar(255) DEFAULT NULL COMMENT '采购商品',
`employee_id` bigint(20) DEFAULT NULL COMMENT '员工ID',
`status` int(2) DEFAULT NULL COMMENT '是否采销易用户(0:是,1:否)',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`modify_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`update_count` int(3) DEFAULT '0' COMMENT '更新次数,用于版本控制',
`deleted` int(2) DEFAULT '0' COMMENT '逻辑删除标记(0:是;1:否)',
`company_address` varchar(255) DEFAULT NULL COMMENT '客户公司地址',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`dept_id` bigint(20) DEFAULT NULL,
`company_id` bigint(20) DEFAULT NULL,
`self_company_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='客户列表';
CREATE TABLE `t_employee` (
`id` bigint(20) NOT NULL DEFAULT '0' COMMENT '自动生成',
`company_id` bigint(20) DEFAULT NULL COMMENT '公司表Id',
`real_name` varchar(30) DEFAULT NULL COMMENT '员工姓名',
`work_phone` varchar(15) DEFAULT NULL COMMENT '办公电话',
`employee_no` varchar(30) DEFAULT NULL COMMENT '员工编号',
`dept_id` bigint(20) DEFAULT NULL,
`position_id` bigint(30) DEFAULT NULL COMMENT '职位id',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户表id',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`modify_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`update_count` int(2) DEFAULT '0' COMMENT '更新次数,用于版本控制',
`deleted` int(2) DEFAULT '0' COMMENT '逻辑删除标记(0:是;1:否)',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='员工管理表';
CREATE TABLE `t_order` (
`id` bigint(20) NOT NULL COMMENT 'id',
`num` varchar(100) DEFAULT NULL COMMENT '订单编号',
`buy_company_id` bigint(20) DEFAULT NULL COMMENT '买方公司Id',
`buy_company_name` varchar(255) DEFAULT NULL COMMENT '买方公司名称',
`sale_company_id` bigint(20) DEFAULT NULL COMMENT '卖方公司Id',
`sale_company_name` varchar(255) DEFAULT NULL COMMENT '卖方公司名称',
`shop_id` bigint(20) DEFAULT NULL COMMENT '店铺Id',
`status` int(4) DEFAULT NULL COMMENT '状态(10:待确认,20:交易中,30:买方取消交易,40:卖方取消交易,50:交易完成,60:退款)',
`pay_status` int(4) DEFAULT '10' COMMENT '付款状态(10:未付过款,20:付过一部分款,30:全部付款)',
`delivery_status` int(4) DEFAULT '10' COMMENT '发货状态(10:未发过货,20:发过一部分货,30:全部发货,40:全部收货)',
`is_has_wait_take_delivery` int(1) DEFAULT '0' COMMENT '是否有发货',
`is_has_refund_apply` int(1) DEFAULT '0' COMMENT '是否有退款申请',
`is_has_refund_record` int(1) DEFAULT '0' COMMENT '是否有退款记录',
`is_has_delivery_apply` int(1) DEFAULT '0' COMMENT '是否有发货申请',
`amount` double(20,4) DEFAULT '0.0000' COMMENT '订单金额',
`paid_amount` double(20,4) DEFAULT '0.0000' COMMENT '已付金额',
`real_pay_amount` double(20,4) DEFAULT '0.0000' COMMENT '实际支付金额',
`pay_type` varchar(50) DEFAULT NULL COMMENT '付款方式(线上支付:10;线下支付:20)',
`pay_count` int(11) DEFAULT NULL COMMENT '付款次数(一次:1:多次:2)',
`delivery_type` varchar(50) DEFAULT NULL COMMENT '发货方式(卖家发货:10;买家自提:20)',
`delivery_count` int(11) DEFAULT NULL COMMENT '发货次数(一次:1:多次:2)',
`buy_company_message` text COMMENT '买家留言',
`order_goods_name` varchar(1000) DEFAULT NULL COMMENT '订单商品名称(筛查时备用字段)',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人Id',
`create_user_name` varchar(255) DEFAULT NULL COMMENT '创建人名称',
`charge_person_id` bigint(20) DEFAULT NULL COMMENT '负责人id',
`charge_person_name` varchar(100) DEFAULT NULL COMMENT '负责人姓名',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',
`update_count` int(3) DEFAULT '0' COMMENT '更新次数,用于版本控制',
`deleted` int(2) DEFAULT '0' COMMENT '逻辑删除标记(0:是;1:否)',
`order_type` int(1) DEFAULT '1' COMMENT '订单类型(1:普通,2:团购)',
`buy_user_id` bigint(20) DEFAULT NULL COMMENT '采购负责人',
`buy_user_name` varchar(100) DEFAULT NULL COMMENT '采购负责人姓名',
`sale_user_id` bigint(20) DEFAULT NULL COMMENT '销售负责人',
`sale_user_name` varchar(100) DEFAULT NULL COMMENT '销售负责人姓名',
`receive_city_names` varchar(255) DEFAULT NULL COMMENT '收货地址',
`approval_user_name` varchar(255) DEFAULT NULL COMMENT '审核人',
`approval_user_id` bigint(20) DEFAULT NULL COMMENT '审核人ID',
`order_invoiced_status` int(4) DEFAULT '10' COMMENT '订单开票状态',
`already_invoiced_amount` double(20,4) DEFAULT '0.0000' COMMENT '订单开票金额',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单表';