声明:  MySQL4.0之后的版本可以支持下面sql语句进行更新操作

应用场景:

  一个表中的字段需要根据查询结果集进行更新,或者从另一表查询获得  其本质还是更新的数据需要查询获得.  

  例如: user 表中有也用户会员卡数量的字段,而这些数据保存在另一张表membership_card ,membership_card 表的一条记录代表着一个用户拥有某家商店的会员卡.那么要将想更新用户会员卡数量的字段

更新方法有两种

  第一种使用连接关键字,如 left join .....等

  update user t LEFT JOIN
( SELECT COUNT(DISTINCT user_id,shop_id) as a ,user_id
from membership_card
GROUP BY user_id
) t1 on t.id=t1.user_id
set t.membership_cards = t1.a ; COMMIT;

  第二种是直接利用 "," 直接连接"两张表"(查询结果也是张临时表)

  update user t ,
( SELECT COUNT(DISTINCT user_id,shop_id) as a ,user_id
from membership_card
GROUP BY user_id
) t1
set t.membership_cards = t1.a
where t.id=t1.user_id; COMMIT;

mysql 根据查询结果集更新的更多相关文章

  1. mysql根据查询结果批量更新多条数据(插入或更新)

    mysql根据查询结果批量更新多条数据(插入或更新) 1.1 前言 mysql根据查询结果执行批量更新或插入时经常会遇到1093的错误问题.基本上批量插入或新增都会涉及到子查询,mysql是建议不要对 ...

  2. Eclipse中java获得mysql的查询结果集

    不废话,先上代码,再上解释说明 package com.ningmeng; import java.sql.*; /** * 1:获取查询结果集 * @author biexiansheng * */ ...

  3. mysql把查询结果集插入到表理

    把表B的内容插入到表A INSERT INTO 1111_0 SELECT*FROM report_0 把查询结果集插入到表中 insert into A(a,b,c) select from B(a ...

  4. mysql 随机查询 记录集

    有时候需求需要随机从数据库查询若干条记录集,网上搜了一下,几篇博文都是些重复的.....不知道他们谁抄的谁的,这里除了介绍提供一种笔者自己想到的方法,本质都是利用mysql 的rand() 第一种方法 ...

  5. Firebird 用查询结果集更新数据,merge

    Merge语法: MERGE INTO target [[AS] target-alias ] USING source [[AS] source-alias ] ON join-condition ...

  6. SQL与Access使用查询结果集更新表

    SQL语法 update 表1 set 字段1 = bb.字段1 from 表1 as aa, (select 字段1,字段2 from 表) bb where aa.字段2 = bb.字段2 Acc ...

  7. MySQL子查询结果集是否有记录

    Mark SELECT tu.id userId, tu.avatar_url avatarUrl, tu.wx_nick_name wxNickName, tu.city city, (select ...

  8. mysql in查询 结果乱序 引发的思考

    Mysql in查询 结果集 乱序 SQL: select * from table where id IN (3,6,9,1,2,5,8,7); 这样的情况取出来后,其实,id还是按1,2,3,4, ...

  9. jdbc 05: 查询结果集

    jdbc连接mysql,查询结果集 package com.examples.jdbc.o5_结果集查询; import java.sql.*; import java.util.ResourceBu ...

随机推荐

  1. 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

    具体的错误原因是:C#中的DateTime类型比SqlServer中的datetime范围大.SqlServer的datetime有效范围是1753年1月1日到9999年12月31日,如果超出这个范围 ...

  2. Win7宽带一键创建

    简化创建宽带连接步骤,为简便而生. 不断分享,不断进步. 免费下载:                  http://yunpan.cn/cmZesi2jpJk9E  访问密码 9444

  3. iOS -- MJrefresh

    - (void)refresh { MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self r ...

  4. C# 压缩与解压字符串(面试题)

    /* * 题目:压缩字符串.如“abbcccddddeef”,压缩成“a1b2c3d4e2f1” * 解题: 这个题目也是面试常见的题目.看似很简单,其实暗藏杀机.一般的想法就是,一边遍历,一边计数, ...

  5. js中如何去获取外部css样式

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  6. [转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题

    原文地址:http://www.ablanxue.com/prone_3552_1.html 1. 查询整个映射对象所有字段 Java代码 //直接from查询出来的是一个映射对象,即:查询整个映射对 ...

  7. nginx正向代理,反向代理,透明代理(总结)

    1正向代理 正向代理,也就是传说中的代理,他的工作原理就像一个跳板, 简单的说, 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器 这个代理服务器呢,他能访问那个我不能访问的网站 于是我先连 ...

  8. java-URLConnection网络数据收取

    通过url创建connection方式收取 import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import ja ...

  9. HTML-正则表达式

    常用HTML正则表达式      1.只能输入数字和英文的:       <input onkeyup="value=value.replace(/[\W]/g,'') "  ...

  10. 深入理解JVM内幕:从基本结构到Java 7新特性

    转自:http://www.importnew.com/1486.html 每个Java开发者都知道Java字节码是执行在JRE((Java Runtime Environment Java运行时环境 ...