這是我的記錄。如何通過postgresql上的新記錄更改舊記錄?
SELECT * FROM items;
id | show | status | user_id | name | note | note_mod | test | test_mod
----+------+--------+---------+------+--------+----------+-------+----------
1 | t | 1 | | Adam | aaa1 | | test1 |
2 | f | 2 | 1 | Adam | aaa1 | aaa2 | test1 | test_new1
3 | t | 1 | | Tom | blabla | | |
4 | f | 2 | 3 | Tom | blabla | baaa | | ayyyyyy
5 | t | 1 | | Eva | | | |
6 | f | 2 | 5 | Eva | | meow | |
我想改變音符,測試1和從note_mod,test_mod 2和4這樣3個值。
id | show | status | user_id | name | note | note_mod | test | test_mod
----+------+--------+---------+------+--------+----------+-------+----------
1 | t | 1 | | Adam | aaa1 | aaa2 | test1 | test_new1
2 | f | 2 | 1 | Adam | aaa1 | aaa2 | test1 | test_new1
3 | t | 1 | | Tom | blabla | baaa | | ayyyyyy
4 | f | 2 | 3 | Tom | blabla | baaa | | ayyyyyy
5 | t | 1 | | Eva | | meow | |
6 | f | 2 | 5 | Eva | | meow | |
id 2 user_id和id 1相同,id 4 user_id和id 3相同。
我知道只有這樣的代碼才能選擇新記錄。
SELECT new.* FROM items old, items new WHERE old.id = new.user_id AND old.id != new.id;
id | show | status | user_id | name | note | note_mod | test | test_mod
----+------+--------+---------+------+--------+----------+-------+----------
2 | f | 2 | 1 | Adam | aaa1 | aaa2 | test1 | test_new1
4 | f | 2 | 3 | Tom | blabla | baaa | | ayyyyyy
6 | f | 2 | 5 | Eva | | meow | |
但我不知道寫UPDATE方法。有誰知道?
P.S.
感謝您的回覆GROX13
我需要做的是從另一個記錄變化值。
如果我運行這段代碼
UPDATE items
SET (note_mod, test_mod) = ('new1', 'test_new1') WHERE id = 1;
記錄將改變這樣的,你知道。
id | show | status | user_id | name | note | note_mod | test | test_mod
----+------+--------+---------+------+--------+----------+-------+----------
1 | t | 1 | | Adam | aaa1 | new1 | test1 | test_new1
但是,代碼需要更改每個字符串「名new1」,「NEW2」,「NEW3」唧唧歪歪...
我正在尋找這樣的代碼。
UPDATE items
SET old(note_mod, test_mod) = new(note_mod, test_mod) WHERE id = 1;
old is mean id 1's note_mod。新是平均ID 2的note_mod。 但我不知道如何在UPDATE上定義舊的和新的。有任何想法嗎?
我想從user_id匹配它們。 status = 1意味着用戶註冊帳戶(example.com/create) then user_id,note_mod,test_mod始終爲空。 名稱是必需的。注意,測試是可空的。
狀態= 2意味着編輯個人資料(example.com/1/edit) 然後USER_ID設置ID自動($數據 - > USER_ID = $請求 - > ID)
如果用戶的變化曲線,輪廓不變化立即。 配置文件只能由我的sql代碼更改。
如果用戶更改註釋或測試, 設置爲note_mod或test_mod,而不是註釋或測試。 ($ data - > note_mod = $ request - > note) note,test,note_mod,test_mod可以爲空。
好吧,你想根據用戶名匹配它們。但是,您如何知道哪一行需要更新以及哪一行應該是此更新的來源?它是'show'字段嗎?這是'ID'的區別嗎?它是'note_mod'是NULL嗎? – joop