zoukankan      html  css  js  c++  java
  • 常用Sql语句

    • 如果有就更新,没有就插入一条,先来一条简单的
    INSERT INTO table_1 ( field_1, field_2 ) VALUES (value_1, value_2) ON DUPLICATE KEY UPDATE field_target = value_target
    
    • table_1:要更新的表
    • field_1...:要更新的字段, 字段中必须含有 UNIQUE 索引的字段,因为 ON DUPLICATE KEY要依靠其工作
    • value_1...:执行Insert时要插入的值,即没有记录时执行的部分
    • field_target = value_target:当有记录存在时,将 field_target 字段值更新为 value_target,允许多个字段和值存在
    • 下面再执行一个稍复杂的,当满足 B 表某些条件时,就插入或更新 A 表中的记录
    INSERT INTO user_table ( user_id, access_token )
    SELECT ad.user_name, 'dcei32kad23-0-sdfjio' 
    FROM admin_table AS ad 
    WHERE	ad.user_name = 'petty' AND ad.user_password = '123456' 
    	ON DUPLICATE KEY UPDATE access_token = 'vbmkaslwe'
    

    上面意思是:找到 admin_table 表中名字等于petty并且密码等于123456的记录,如果有就更新 user_talbe 表中 user_id = user_name 的那条记录的 access_token,使其值更改为 'vbmkaslwe',如果没有 user_id = user_name 的记录的话,就往 user_table 中插入一条新记录,该记录的 user_id 使用 ad.user_name 作为值,该记录的 access_token 使用 'dcei32kad23-0-sdfjio' 作为值。

    • 多个表选择+条件+排序+分组
    SELECT at.object_id AS id, at.title, at.time, at.time, at.`status`, COUNT(ae.user_id) AS `count` 
    FROM table_1 AS at
    LEFT JOIN table_2 AS ae 
    ON ae.activity_id = at.object_id 
    WHERE at.deleted = FALSE  
    AND EXISTS(SELECT id FROM table_3 WHERE token = '' AND user_id = '' AND expires > TIMESTAMPDIFF(SECOND, allocate_time, now())) 
    GROUP BY at.id 
    ORDER BY at.time DESC 
    LIMIT 0, 10
    

    上面的意思是:输出 xxx 列,从 table_1和table_2,关联条件是 table_2 中多个记录的 id 值要在 table_1 中存在(table_1:table_2=1:N),选择条件是 table_1 中没删除的 并且是满足 table_3 中某条件的那些个记录。把这些个记录按 table_1 的id分组(这样table_1的就不会重复),按 table_1 的时间倒序,这些记录只输出前10个

  • 相关阅读:
    【Selenium】selenium中隐藏元素如何定位?
    【Mock】【接口测试】【面试】mock-server 环境搭建—加分项!
    【Mock】mock基础、简单的单元测试代码练习。
    【WebDriver】WebDriver 常用操作
    【Loadrunner】Loadrnner 参数化策略
    ES6系列_11之Set和WeakSet数据结构
    ES6系列_10之Symbol在对象中的作用
    ES6系列_9之对象
    ES6系列_8之函数和数组
    ES6系列_7之箭头函数和扩展
  • 原文地址:https://www.cnblogs.com/cinlap/p/9699172.html
Copyright © 2011-2022 走看看