我有下表命名transactionCount:
id | username_id | count | active
---- ------------- ------- --------
1 | 1 | 1 | t
2 | 1 | 3 | t
4 | 2 | 1 | t
5 | 3 | 6 | f
我想更新username_id == 1column的第一行count。
由于資料的結構方式,我不能使用,id而是找到一種方法來 ORDER_BYusername并更新該用戶的第一行 where active = t(true)
最終結果應該是:
id | username_id | count | active
---- ------------- ------- --------
1 | 1 | 2 | t <================ RESULT
2 | 1 | 3 | t
4 | 2 | 1 | t
5 | 3 | 6 | f
我已經嘗試了下面的 sql 查詢:
UPDATE transactionCount SET count = 2 WHERE username_id = 1 AND active = 'true' order_by id ASC;
但它似乎不起作用,這是撰寫該查詢的更好方法嗎?
uj5u.com熱心網友回復:
您需要使用子查詢查找要更新的 ID。然后可以在 UPDATE 陳述句的 WHERE 條件中使用它:
UPDATE transactioncount
SET count = 2
WHERE ID = (select min(id)
from transactioncount
where username_id = 1
AND active = 'true');
這假設它id是唯一的(例如主鍵)
uj5u.com熱心網友回復:
更新應通過主鍵欄位執行。
否則,您的表格可能會被搞砸,因為不止一條記錄可以匹配您的過濾條件。
在您的情況下,您尋求的最高線可能與您之前預期的不同。
uj5u.com熱心網友回復:
UPDATE transactionCount SET count=2
WHERE ID =(SELECT id FROM transactionsCount WHERE username_id=1 AND active= ‘true’ ORDER BY id ASC LIMIT 1)
這只會獲取找到的第一個 id 并更新它
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/425016.html
標籤:sql PostgreSQL sql更新
上一篇:如何在sql計算中使用變數
