以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请教下SQL只更新最早一条多列重复语句的方法,已解决  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186309)

--  作者:WELOVEFOX
--  发布时间:2023/4/20 17:43:00
--  [求助]请教下SQL只更新最早一条多列重复语句的方法,已解决

图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2023-04-20_17-20-32.jpg
图片点击可在新窗口打开查看


外部MDB数据库表A,时间列data, 整数列 标记,id,字符列name, 
希望将上述(不加载,希望后台执行,上述是示范)数据中,
将id=15,name=‘N1’,标记=1的所有重复数据中,最早的一行数据修改标记=2
希望达到


图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2023-04-20_17-35-07.jpg
图片点击可在新窗口打开查看

使用以语句

Dim cmd As New_SQLCommand
cmd.Co__e = "DD"
Dim did As Integer = 15
Dim  dname String = "N1"

cmd._CommandText = "U_PDATE {表A} Set 标记 = 2 Where (id = (S_ELECT TOP 1 id FROM {表A} WHERE id = " & did & " AND 标记 = 1 AND dname = \'" & dname & "\' order by Data))"

cmd.ExecuteNonQuery()


说明:_为发贴需要,实际无_,_C发贴省略

(我是希望不用另外增加前台数据表,直接在后台实现) 
结果变成所有符合的数据都修改为标记=2了,


图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2023-04-20_17-41-06.jpg
图片点击可在新窗口打开查看



我只是想修改最早的一条,不是所有符合的多条数据全部修改。百度,GPT都尝试过了,没找到方法,是不是不能实现?

能想到的另外方法,就是只能增加表,加载符合的数据,排序,再将ROW(0)修改。

-_-!!
cmd._CommandText = "U_PDATE {表A} Set 标记 = 2 Where (data = (S_ELECT TOP 1 data FROM {表A} WHERE id = " & did & " AND 标记 = 1 AND dname = \'" & dname & "\' order by Data))"
解决。

不知道data重复会不会有影响,保险一点用[_Identify]主键了。
cmd._CommandText = "U_PDATE {表A} Set 标记 = 2 Where ([_Identify]= (S_ELECT TOP 1 [_Identify] FROM {表A} WHERE id = " & did & " AND 标记 = 1 AND dname = \'" & dname & "\' order by Data))" 
[此贴子已经被作者于2023/4/20 18:12:09编辑过]