這看起來像是一個重複問題,但似乎總是涉及多個表的問題。當選中表格中的一行時,我還需要在同一行中+1查看計數。我知道我不能在同一個查詢中使用觸發器或兩個語句,但是這兩件事情都可以通過與數據庫的單一連接完成嗎?首選方法是選擇一行然後+1視圖字段?在mysql中的一個連接中選擇並更新同一個表和行
1
A
回答
1
它可以在同一個連接中完成,但我想不出使用一個查詢完成該操作的方法。
下面是你將如何做一個單一的交易;
START TRANSACTION;
UPDATE tbl SET view=view+1 WHERE id = 10;
SELECT * FROM tbl WHERE id = 10;
COMMIT;
第二個「更好」的方法,你可以做到這一點,消除不必讀取tbl
表的兩倍。
UPDATE tbl
SET view = (@viewsCount := view + 1)
WHERE id = 10;
而得到的意見的新值算我會做這樣的事情
SELECT @viewsCount;
第三種方式是通過利用LAST_INSERT_ID()
功能,像這樣
UPDATE tbl
SET view = LAST_INSERT_ID(view) + 1
WHERE id = 10;
然後要獲得新的視圖計數,您需要在更新後立即執行此查詢。更新後您不能執行任何其他查詢,否則您將無法獲得預期的價值。
SELECT LAST_INSERT_ID();
+0
謝謝邁克。我認爲第一個選擇是我想要的。第二個選項只有一個表讀取是我想要完成的,但我需要對查看計數進行選擇和更新。如果它很重要,我不需要使用select來獲取更新的視圖計數。我只是想找到最有效的方式來跟蹤選定行的查看次數,以便在日常的crone作業中使用。 –
+0
你將不得不將你需要做的事分成多個步驟。儘可能使用選項#1。您也可以在視圖列上選擇後添加一個觸發器,這會自動爲您增加值。我不建議使用觸發器,它會導致速度放慢 –
相關問題
- 1. 選擇並更新到同一個表
- 2. Mysql - 從一個表中選擇一個隨機行並將它連接到另一個表中的三行
- 3. 如何使用更新並選擇同一個表格? MySQL的
- 4. 如何在MySQL更新語句中選擇同一個表
- 5. 在同一個表中使用外連接進行Sql選擇
- 6. 如何從一個表中選擇一行,使用mysql中的連接從其他表中選擇一行,
- 7. Sequelize MySQL從同一個表中選擇(左連接)
- 8. 更新在同一個表內連接
- 9. MySQL的更新和同一個表子查詢選擇
- 10. php/mysql:從表中選擇並更新一個查詢
- 11. 在mysql中選擇連接多個表?
- 12. 更新同一表的多個連接
- 13. 的MySQL選擇一個隨機行從兩個連接表
- 14. MySQL更新與多個連接到同一個表的查詢
- 15. 從一個表中選擇所有和連接到另一個
- 16. 從mySQL中的兩個連接表中選擇一個特定的行
- 17. 插入和更新同一個TRANSACTION中的同一行? (MySQL)
- 18. Xpath並在同一個錶行中選擇不同的信息
- 19. 在高並行連接上只選擇一個錶行
- 20. 在一個語句中選擇兩個表的連接中的第一行
- 21. Mysql基於從另一個表中選擇更新所有行
- 22. MySQL使用a和b從同一個表中選擇並插入新表
- 23. mysql更新選擇語句與多個表和左外連接
- 24. MySQL在一個查詢中選擇並更新
- 25. Mysql選擇多個表,但內部連接在一個表上
- 26. MySQL錯誤在更新中的一個屬性連接表
- 27. Mysql:多個連接在一個表中
- 28. 在一個查詢中選擇一個值並更新狀態
- 29. MySQL - 將同一個表中的多個選擇合併到一個組中的一個結果表中
- 30. 如何從同一個表中MSACCESS選擇和更新2007
'update table set val = val + 1' - 如果你也想要這行,你必須做兩個查詢。 – twentylemon
存儲過程。 'select'語句不會修改數據庫。 –
我認爲他在這裏試圖做的是消除必須讀兩次表,一次讀更新,另一次讀。請看下面的答案,因爲它應該是一種使用2個查詢進行更新和閱讀的方式,但您只能在表格上操作一次。 –