【问题标题】:MySQL update only one recordMySQL只更新一条记录
【发布时间】:2018-07-17 12:54:10
【问题描述】:

我有一个用例,我需要根据不同的条件只更新一条记录,问题是这些条件检索了许多记录, 所以update语句每次都会更新所有的记录,

UPDATE t_wallet_log wallet_log
LEFT JOIN t_end_user enduser
ON enduser.f_id=wallet_log.f_end_user_id
set wallet_log.f_txn_status = 'successful' 
WHERE enduser.f_ref_number='ugY-227'
AND wallet_log.f_amount=1000
AND wallet_log.f_txn_kind='cr' 

我几乎尝试了所有我知道的东西,但没有运气

【问题讨论】:

  • 是否有任何您正在存储的交易请求参考(这对于您尝试更新状态的交易而言是唯一的)?
  • @SebastienD: 那是表别名
  • @SebastienD,这不是问题
  • 你试过子查询吗?
  • @shaz,不,我们没有任何与交易相关的唯一标识符

标签: mysql join sql-update


【解决方案1】:

请尝试以下查询。

UPDATE wallet_log set wallet_log.f_txn_status = 'successful' where id=(
select p1.id from ( select wallet_log.id from t_wallet_log wallet_log
LEFT JOIN t_end_user enduser
ON enduser.f_id=wallet_log.f_end_user_id
WHERE enduser.f_ref_number='ugY-227'
AND wallet_log.f_amount=1000
AND wallet_log.f_txn_kind='cr' order by id desc limit 1)p1);

这会对你有所帮助。

【讨论】:

  • 请注意,这是一个伪装成左连接的内连接。这里肯定还有比绝对必要更多的查询
猜你喜欢
  • 2015-06-02
  • 1970-01-01
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 2019-02-18
相关资源
最近更新 更多