MySQL update ...set後的and寫法的邏輯
正常update語句update table_name set col1=xxx,col2=xxxx,col3=xxxx,col4=xx and col5=xxxx;
一眼看上去這個SQL真腦殘了,哪個開發寫錯了寫成and,其實不然....這是MySQL中特有的腦殘寫法... ...真是腦殘
二話不說,建立測試表
mysql> create table test1 (expression varchar(100),notes varchar(100)); Query OK, 0 rows affected (0.36 sec) mysql> insert into test1 values ('5','6'); Query OK, 1 row affected (0.02 sec) mysql> insert into test1 values ('1121','xxxx'); Query OK, 1 row affected (0.02 sec) mysql> insert into test1 values ('xxxx','111'); Query OK, 1 row affected (0.01 sec)
執行update set exp1='xxx' and exp2 ='mmm';
mysql> update test1 set expression='5' and notes = '6' ; Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> select * from test1; +------------+-------+ | expression | notes | +------------+-------+ | 1 | 6 | | 0 | xxxx | | 0 | 111 | +------------+-------+ 3 rows in set (0.00 sec)
看到上方的邏輯其實是等價於如下:
mysql> update test1 set expression=(case when notes ='6' then 1 else 0 end); Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> select * from test1; +------------+-------+ | expression | notes | +------------+-------+ | 1 | 6 | | 0 | xxxx | | 0 | 111 | +------------+-------+ 3 rows in set (0.00 sec)
mysql中 and 是當做運算子"&&"
則 set column1=value1 and column2=value2 等價於 set column1=(value1&&column2=value2)即setcolumn1=0或1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2909051/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- UPDATE SET = (SELECT ) 語法的總結
- mysql的邏輯備份MySql
- MySQL中UPDATE語句裡SET後使用AND的執行過程和結果分析MySql
- 計算機程式的思維邏輯 (73) - 併發容器 - 寫時拷貝的List和Set計算機
- oracle update語句的幾點寫法Oracle
- PostgreSQL,SQLServer邏輯增量(通過邏輯標記update,delete)同步到Greenplum,PostgreSQLSQLServerdelete
- Update 多個關聯表SQL的寫法SQL
- 看懂「www.google.com」背後的邏輯Go
- mysql 語句不能update的解決辦法MySql
- mysql 邏輯備份 (mysqldump)MySql
- 使用 Promise 來改寫 JavaScript 的載入邏輯PromiseJavaScript
- 圖解MySQL邏輯備份的實現流程圖解MySql
- 簡記MySQL的邏輯備份(mydumper+mysqldump)MySql
- sql優化案例:改變表的寫法使代價和邏輯讀降下來SQL優化
- MySQL邏輯查詢處理MySql
- MySql邏輯備份恢復MySql
- 一個愚蠢的python邏輯語法錯誤Python
- MySQL:MGR 學習(2):Write set(寫集合)的寫入過程MySql
- swift3.0後的for in寫法Swift
- 用後臺開發的邏輯理念學習VUEVue
- javascript 物件屬性的get set訪問器寫法JavaScript物件
- MySQL提升筆記(1):MySQL邏輯架構MySql筆記架構
- Python寫業務邏輯的幾個編碼原則Python
- MySQL 常用的UPDATE操作MySql
- MySQL筆記 10 條件邏輯MySql筆記
- mysql學習之-邏輯架構MySql架構
- C-04.MySQL邏輯架構MySql架構
- Neditor 2.0.0 釋出,移除後端程式碼,重寫上傳邏輯(Ajax)後端
- Leetcode: 627 - UPDATE, SET, ifLeetCode
- 計算機程式的思維邏輯 (75) - 併發容器 - 基於SkipList的Map和Set計算機
- Mysql是不是沒有專門的邏輯型別列MySql型別
- 掌握 Promise 的邏輯方法Promise
- 推送的基礎邏輯
- oracle的邏輯結構Oracle
- 面向需求的邏輯模型模型
- Mysql 分組排序的sql寫法MySql排序
- mysql update join,insert select 語法MySql
- 公司內部分享之mysql邏輯框架MySql框架