mysql的左連線問題

2022-01-16 01:32:53 字數 791 閱讀 7844

之前寫過乙個mysql語句,功能是將乙個表ds的乙個字段值同步更新到另乙個表bk的字段,不過不是全部,只更新表bk中有的資料,如果表bk中有而表ds中沒有,表b對應的這個字段值就為空

update bk left

join 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 left

join 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...