mariadb 如何在没有主键的SQL中只更新重复行中的一行?

dauxcl2d  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(146)

我有一个表,其中包含以下列:
| 标准标识|sbj_id|降序|可控硅整流器|sbm_dt|
| - -|- -|- -|- -|- -|
| 二OO一年|10个|第二季度|七点四|2021年5月3日17时03分32秒|
| 二OO一年|10个|第一季度|8.0版本|2021年4月3日18时07分35秒|
| 二〇一一年|10个|第一季度|5.0版本|2021年4月3日19时07分35秒|
| 二OO一年|10个|第二季度|七点四|2021年5月3日17时03分32秒|
我想将表最后一行的st_id值更新为2011。当表中没有主键时,如何只更新表中的一个重复值?
预期结果:
| 标准标识|sbj_id|降序|可控硅整流器|sbm_dt|
| - -|- -|- -|- -|- -|
| 二OO一年|10个|第二季度|七点四|2021年5月3日17时03分32秒|
| 二OO一年|10个|第一季度|8.0版本|2021年4月3日18时07分35秒|
| 二〇一一年|10个|第一季度|5.0版本|2021年4月3日19时07分35秒|
| 二〇一一年|10个|第二季度|七点四|2021年5月3日17时03分32秒|

ifsvaxew

ifsvaxew1#

架构和插入语句:

create table testTable(st_id int, sbj_id int, description varchar(50), scr float, sbm_dt datetime);
 insert into testTable values(2001, 10, 'Q2',   7.4,    '2021-05-03 17:03:32');
 insert into testTable values(2001, 10, 'Q1',   8.0,    '2021-04-03 18:07:35');
 insert into testTable values(2011, 10, 'Q1',   5.0,    '2021-04-03 19:07:35');
 insert into testTable values(2001, 10, 'Q2',   7.4,    '2021-05-03 17:03:32');

更新查询:

update testTable set st_id=2011 where st_id=2001  order by sbm_dt desc limit 1

查询:

select  * from testTable

输出量:
| 标准标识|sbj_id|说明书|可控硅整流器|sbm_dt|
| - -|- -|- -|- -|- -|
| 二〇一一年|10个|第二季度|七点四|2021年5月3日17时03分32秒|
| 二OO一年|10个|第一季度|八个|2021年4月3日18时07分35秒|
| 二〇一一年|10个|第一季度|五个|2021年4月3日19时07分35秒|
| 二OO一年|10个|第二季度|七点四|2021年5月3日17时03分32秒|

  • db〈〉小提琴

相关问题