当前位置: 首页 > news >繁体>#SQL1242错误

#SQL1242错误

---------------------

  1. 子查询更新数据时遇到多条数据时,可以使用SUM&MIN等函数解决:如下:
    //正确的方法一对多
    UPDATE `yd_draw_prize_order` SET `adopt_update_time` = (SELECT MIN(`update_time`) FROM `yd_draw_prize_order_number` WHERE `d_p_order_id` = `yd_draw_prize_order`.`d_p_order_id`) WHERE `adopt_update_time` IS NULL//报1242错误方式一对多
    UPDATE `yd_draw_prize_order` SET `adopt_update_time` = (SELECT `update_time` FROM `yd_draw_prize_order_number` WHERE `d_p_order_id` = `yd_draw_prize_order`.`d_p_order_id`) WHERE `adopt_update_time` IS NULL
    View Code

     

  2. 时间查询     简单举例: SELECT COUNT('$column') FROM `%table` WHERE `$column` BETWEEN UNIX_TIMESTAMP('2018-05-03 00:00:01') AND UNIX_TIMESTAMP('2018-05-03 23:59:59')
    更多时间查询案例;
    案例分享:
    //FROM_UNIXTIME 将时间戳转换为字符串日期;
    //UNIX_TIMESTAMP 将其他时间转换为时间戳;
    SELECT`yd_draw_prize_order`.`d_p_order_id`,yd_draw_prize_order_log.`rand_num`,FROM_UNIXTIME(yd_draw_prize_order.adopt_time) AS adopt_time,FROM_UNIXTIME(yd_draw_prize_order_log.draw_time) AS '抽奖时间',yd_draw_prize_order_log.`d_p_order_activity_id`,yd_draw_prize_order_log.`d_p_order_activity_name`,yd_draw_prize_order_log.`draw_num`,yd_draw_prize_order_log.`winning`
    FROM`yd_draw_prize_order`INNER JOIN `yd_draw_prize_order_number`ON yd_draw_prize_order.d_p_order_id = yd_draw_prize_order_number.d_p_order_idINNER JOIN `yd_draw_prize_order_log`ON yd_draw_prize_order.d_p_order_id = yd_draw_prize_order_log.d_p_order_id
    WHERE `customer_phone` = '15512816085'AND `adopt` = 1AND   yd_draw_prize_order_number.`reward_num` = 04028AND   yd_draw_prize_order_log.draw_time > UNIX_TIMESTAMP(NOW())AND  yd_draw_prize_order_log.`d_p_order_activity_id` = 2
    

    案例2

    //日期子查询;
    SELECT*
    FROM`yd_extension_data_1`
    WHERE `distrbutor_id` IN(SELECT`distrbutor_id`FROM`yd_distrbutor`WHERE `distrbutor_provinceid` = 19)AND `create_time` BETWEEN '2017-01-01 00:00:01'AND '2018-01-01 00:00:00'
    AND `distrbutor_id` NOT IN (1,23)
    ORDER BY `create_time`
    

      

     

  3. 综合查询&&综合更新
    综合查询案例1:
    1.
    SELECTb.id AS '用户id',user_name AS '用户名',`active_points` AS '积分',COUNT(bet_state) AS '猜中数',GROUP_CONCAT(bet_state) AS '统计情况',GROUP_CONCAT(match_id) AS '赛事ID',b.share AS '1为己分享',`use_points` AS '消耗积分'
    FROMyd_draw_worldcup_betting AS aINNER JOIN yd_draw_worldcup_user AS b
    WHERE a.`worldcup_user_id` = b.`id`AND a.`bet_state` IN (20, 21, 22)AND b.`use_points` <> 0
    GROUP BY id;2.SELECTb.id AS '用户id',user_name AS '用户名',`active_points` AS '积分',b.share + COUNT(bet_state) AS '自定义',COUNT(bet_state) AS '猜中数',b.share AS '1为己分享',`use_points` AS '消耗积分'FROMyd_draw_worldcup_betting AS aINNER JOIN yd_draw_worldcup_user AS b
    WHERE a.`worldcup_user_id` = b.`id`AND a.`bet_state` IN (20, 21, 22)AND b.`use_points` = 0
    GROUP BY id;
    View Code

     

    综合简单查询更新1:
    1.UPDATE`yd_draw_worldcup_user`
    SET`active_points` = `active_points` + 1
    WHERE `id` IN(SELECT`worldcup_user_id`FROM`yd_draw_worldcup_betting`WHERE `match_id` = 2AND `bet_state` IN (20, 21, 22))
    View Code

     综合链表更新2:

    1.
    update yd_draw_worldcup_user as a,yd_draw_worldcup_betting as b set 
    a.active_points = 0,
    b.bet_state = 10,
    b.draw_number = ''where b.match_id in (1,2,3,4,5) and b.worldcup_user_id = a.id;
    View Code

     

  4. 判断语句:
    UPDATE yd_draw_worldcup_user AS a
    SET a.active_points = 
    (CASE WHEN (a.active_points + a.`share` < a.use_points) THEN 0 ELSE (a.active_points + a.`share` - a.use_points) END)WHERE 1;
  5. 事务语句:
    #mysql使用事务的关键字
    #begin //打开一个事务
    #commit //提交到数据库
    #rollback //取消操作
    #savepoint //保存,部分取消,部分提交
    #alter table person type=INNODB //修改数据引擎begin; 
    update tags set tagid = 133 where docid = 1;
    SAVEPOINT tags1;
    update tags set tagid = 530 where docid =2;
    SAVEPOINT tags2;
    ROLLBACK  TO SAVEPOINT tags2;
    SELECT * from tags where docid in(1,2);
    commit;
    

      

  6. 自定义序列号字段:
    SET @rownum=0;
    SELECT@rownum:=@rownum+1 AS '序列',a.<You_TableName_Field> AS '用户名称'
    FROM(SELECT @rownum:=0) r,<You_TableName> AS a
    WHERE 1
    ORDER BY <You_TableName>.<You_TableName_Field> ASC
    

      

  7. mysql update You can't specify target table 'yd_qr_code' for update in FROM clause . 

    原:update `yd_qr_code` set winning_description =  (select a.`winning_description` from `yd_qr_code` as a where a.`qr_id` = 1) where qr_id = 2
    原理:mysql 不能在同表操作更新,我们要用一个 中间表 来让数据库认为不是同表操作;
    后:update `yd_qr_code` set winning_description = (select b.`winning_description` from (select a.`winning_description` from `yd_qr_code` as a where a.`qr_id` = 1)b) where qr_id = 2

 --------------------------------

权限:

  • 为用户 xuguo 添加"xu_gms" 数据库操作权限:GRANT ALL PRIVILEGES ON xu_gms.* to 'xuguo'@'%';  
  • 数据库文件导出: mysqldump -u username -p dbname > filename.sql
  • 查看字符集:show variables like '%char%';
    修改数据字符集:

    set character_set_database=utf8;
    set character_set_server=utf8;

  • 修改全局变量max_allowed_packet:global max_allowed_packet = 2*1024*1024*10 ;    查看全局变量max_allowed_packet:show VARIABLES like '%max_allowed_packet%';
  • --

 

 

 

---------------------

转载于:https://www.cnblogs.com/q1104460935/p/8900412.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-18019.html

如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网进行投诉反馈,一经查实,立即删除!


相关文章:

  • SSL-ZYC 2402 世界语
  • ActiveMQ 无法启动 提示端口被占用 解决方案
  • MySQL全量备份和增量备份脚本
  • HDU 2159 完全背包
  • 理解数据类型与数学运算:摄氏温度与华氏温度的相互转换
  • YouCompleteMe自动补全的安装配置与使用
  • [BZOJ5006][LOJ#2290][THUWC2017]随机二分图(概率+状压DP)
  • java基础-对象-练习集锦
  • WPF中,输入完密码回车提交 ,回车触发按钮点击事件
  • python实现文件批量添加重命名
  • linux随手笔记(Centos为主)
  • js表单验证 方法
  • luogu题解 UVA11992 【Fast Matrix Operations】
  • 错误与异常_1-5选择题
  • access窗体主体居中
  • 51nod 1268最大距离
  • 51nod 1285山峰和分段
  • expected at least 1 bean which qualifies as autowire candidate for this depe (spring无法注入)...
  • 20172330 2017-2018-1 《Java程序设计》第八周学习总结
  • node socketlog
  • JavaWeb学习笔记7--JSP脚本元素、指令元素、动作元素
  • BZOJ2395 [Balkan 2011]Timeismoney 【最小乘积生成树】
  • 测试小白的实习
  • js:防抖动与节流【转载】
  • Groovy闭包
  • pandas如何去掉时间列的小时只保留日期
  • 上周热点回顾(4.30-5.6)
  • spring-session实现分布式集群session的共享(转)
  • Ubuntu16.04LTS +Qt+boost1.66编译错误:consuming_buffers.hpp: parse error in template argument list...
  • Spring 下 MyBatis 的基本使用
  • 处事笔记
  • SSM框架搭建问题
  • 一次http请求中的信息
  • 浅谈css常用伪类用法
  • SSM集成activiti6.0错误集锦(二)
  • SaltStack 拉取和推送文件
  • B VUE系列 三:vuex,vue全局变量管理和状态更新的利器
  • 一个简单的进程池版的爬虫程序
  • SSL-ZYC 2416 条形图
  • 0513-2
  • php中的转义字符(用反斜杠\来输出,和C语言一样)
  • mysql存表情出错的解决方案(类似\xF0\x9F\x98\x86\xF0\x9F)
  • 拒绝卡顿——在WPF中使用多线程更新UI
  • 【洛谷】【线段树】P1047 校门外的树
  • Jupyter 同时支持python2、python3 kernel
  • 多变量微积分笔记19——直角坐标系和柱坐标系下的三重积分
  • js:变量,作用域以及内存问题
  • [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis
  • Centos-显示文件类型-file
  • JavaBean的实用工具Lombok(省去get、set等方法)