我們發現update子句無法更新包含在from子句中的表,如這樣的兩個表user1和user2
+----+-----------+----------+
| id | user_name | over |
+----+-----------+----------+
| 1 | 孫悟空 | 鬥戰勝佛 |
| 2 | 沙僧 | 金身羅漢 |
| 3 | 唐僧 | 功德佛 |
| 4 | 豬八戒 | 淨壇使者 |
+----+-----------+----------+
+----+-----------+--------+
| id | user_name | over |
+----+-----------+--------+
| 1 | 孫悟空 | 成佛 |
| 2 | 牛魔王 | 被降伏 |
| 3 | 蛟魔王 | 被降伏 |
| 4 | 鵬魔王 | 被降伏 |
| 5 | 獅駝王 | 被降伏 |
+----+-----------+--------+
mysql> update user1 a set a.over="齊天大聖" where a.user_name in (select a.user_name from user1 a join user2 b on a.user_name=b.user_name);
error 1093 (hy000): you can't specify target table 'a' for update in from clause
我們發現,mysql丟擲乙個錯誤,意思是指,不能更新被包含在from子句中的表。那我們可以借助join子句來實現將表user1放在join子句中的目的,如下:
mysql> update user1 a join (select b.user_name from user1 a join user2 b on a.user_name=b.user_name) b on a.user_name=b.user_name set a.over="齊天大聖";
query ok, 1 row affected (0.00 sec)
rows matched: 1 changed: 1 warnings: 0
mysql> select * from user1;
+----+-----------+----------+
| id | user_name | over |
+----+-----------+----------+
| 1 | 孫悟空 | 齊天大聖 |
| 2 | 沙僧 | 金身羅漢 |
| 3 | 唐僧 | 功德佛 |
| 4 | 豬八戒 | 淨壇使者 |
+----+-----------+----------+
4 rows in set (0.00 sec)
利用VS 2012更新表
想要更新一下資料庫裡的一張表,但是往表裡插入資料,再應用到資料庫時會報錯 sql0670n 表的行長度超過了 8101 位元組這一限制。sqlstate 54010,原來該錶的表空間只有8k,而資料項的長度已經遠遠超過了8k的表空間,因為沒有許可權,所以找系統服務部的人搬到了另乙個32k的表空間。然...
利用HandlerInteceptor來做請求驗證
小疑問 為什麼是interceptor的名字是用handler開頭的而不是httprequest?其實這是spring自己的 servlet的api裡是沒有interceptor的,功能相似的是filter,但是spring需要更強的控制能力,可以說是定製能力,filter只有interceptor...
mysql利用join優化子查詢
有表user id,name 和code id,student code 如果要查詢code在user中的對應的全部內容 沒有就為null 方式1 子查詢 select a.id a,name select b.student code from code c where c.id u.id fro...