之前寫過乙個mysql語句,功能是將乙個表ds的乙個字段值同步更新到另乙個表bk的字段,不過不是全部,只更新表bk中有的資料,如果表bk中有而表ds中沒有,表b對應的這個字段值就為空
update bk leftjoin ds on bk.`a`=
ds.`a`
set bk.`status`=ds.`status` where ds.`owner`=
'admin
';
上面這個語句一眼看過來是應該可以實現我要的功能的,但是實際情況是這個語句只更新了表bk和表ds都有的資料,表b中有而表a中沒有的資料保持原來的值,並未修改到。後來檢視了很多資料才找到問題所在,因為我在where子句裡面有右表ds的字段約束,所以這個語句只會找到右表ds裡面有的資料並更新到左表bk對應的資料
要達到我要的功能就不能在where子句裡面新增右表的字段約束,那右表的字段約束寫到**?
update bk leftjoin ds on bk.`a`=ds.`a` and ds.`owner`=
'admin
'set bk.`status`=ds.`status`;
經過測試,把右表的字段約束寫到on的條件裡面,用and與其他約束連線。
我這個是在用mysql的時候發現的問題,不知道在sql server會不會有這個問題,另外如果我想把表bk中有而表ds中沒有的資料對應的這個字段值修改成字串「done」,不知道有沒有辦法直接用乙個語句實現,之前翻過很多資料,都沒有找到想要的答案,各位大神有沒有知道的,麻煩教教我,萬分感謝!
mysql 左連線 重複 mysql左連線重複行
我正在設計乙個類似於4個 的字典資料庫 words wordid lemma senses wordid synsetid synsets synsetid definition samples synsetid sample所以我使用下面的查詢來獲取所有意義定義和樣本 if isset searc...
MySQL左連線 右連線
表a記錄如下 aid anum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表b記錄如下 bid bname 1 2006032401 2 2006032402 3 2006032403 4 2006032404 8 200...
MySQL 左連線 右連線
表a記錄如下 aid anum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表b記錄如下 bid bname 1 2006032401 2 2006032402 3 2006032403 4 2006032404 8 200...