MySQL中UPDATE某个字段通过LEFT JOIN
- 3001
- MySQL
- 0
- super_dodo
- 2020/09/28
最近维护一个老项目,因为之前的表设计是满足之前的项目的。现在项目有改动,需要去做更新。项目逻辑就不一一介绍。现在剥离出其中一个小项。也就是在用户表中附加一个字段,得到这个用户的地址id。之前是地址表中存有用户ID,每次都需要去连表LEFT JOIN,而且有些用户是没有地址的,所以需要这么去判断.
//查询出没有用户地址的用户列表
SELECT * FROM user_list AS A LEFT user_address AS B ON (A.id=B.user_id AND ISNULL(B.id));
数据量大的时候联表查询有性能消耗,尤其是要联表多个的时候。
现在需要在用户表里新增一个字段address_id默认值为0.新增完成后,就需要去更新这个字段。起初笨笨的dodo想写个循环去更新,但是一看数据表几万条,这样太费时费力。
于是可以参考下面的sql语句,一句搞定且高效。
// 更新A表里面的字段,值来自于B表
UPDATE user_list AS A
LEFT JOIN user_address AS B ON A.id = B.user_id
SET A.address_id = IFNULL(B.id,0), A.address_status=IFNULL(B.status,0);
最后很多的方式都可以直接用MySQL来处理。这样很高效也提高了IO。
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例