【问题标题】:mysql update query needs to execute only one time when duplicate existmysql更新查询在存在重复时只需要执行一次
【发布时间】:2021-10-15 20:23:37
【问题描述】:

我在表中有两条具有相同值的记录。我需要在一行中插入一个ID。下面是表中的记录。

我需要在第一条记录中插入PI123。为此,我想运行更新查询。可以请任何人帮忙吗?。

我已经尝试过这个查询

UPDATE mowbly_pace_receipt_services 
SET id = 'PI123' 
WHERE createdat = (SELECT createdat 
                   FROM mowbly_pace_receipt_services 
                   WHERE createdat='1628500751153' 
                   LIMIT 1) 
    and code='SPI';

【问题讨论】:

  • 嗨@NazeerShaik你使用哪个mysql版本?
  • @RahulBiswas iam 使用 mysql 工作台 8.0 版

标签: mysql sql-update sql-limit


【解决方案1】:

你试过了吗?我不确定它是否有效,但您可以尝试。

UPDATE mowbly_pace_receipt_services SET id = 'PI123' WHERE createdat = (SELECT createdat FROM mowbly_pace_receipt_services WHERE createdat='1628500751153' LIMIT 1) and code= (SELECT code FROM mowbly_pace_receipt_services WHERE code ='SPI' LIMIT 1);

【讨论】:

  • 感谢 Mujeeb 的回复。但它不起作用。它给出错误代码:1093。您不能在 FROM 子句中指定目标表“mowbly_pace_receipt_services”进行更新
【解决方案2】:

你可以在UPDATE语句中直接使用LIMIT 1

UPDATE mowbly_pace_receipt_services 
SET id = 'PI123' 
WHERE createdat = '1628500751153' AND code='SPI'
LIMIT 1;

但这并不能保证 2 行中的哪一行会被更新。
您应该在表中有一个 PRIMARY KEY 列,例如一个可用于设置行顺序的 AUTO_INCREMENT id。

请参阅demo

【讨论】:

  • 非常感谢@forpas。您的查询适用于此解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 1970-01-01
相关资源
最近更新 更多