【发布时间】:2020-03-17 17:54:32
【问题描述】:
我有 3 张桌子。每次我上传文件时,表 1 都会更新。表 2 是一个存档表,用于存储所有上传文件中的记录。表3存储了表2经过一些验证后的数据。
第一个文件上传:
表 1:
RefNo | Code | ID
--------+----------+-----
1234 30 1
5678 40 2
表 2:
RefNo | Code | ID
--------+----------+------
1234 30 1
5678 40 2
第二次文件上传
表 1:
RefNo | Code | ID
--------+----------+-----
1234 50 3
5678 60 4
表 2:
RefNo | Code | ID
--------+----------+------
1234 30 1
5678 40 2
1234 50 3
5678 60 4
第三个文件上传(更新代码=100,参考号 = 1234)
表 1:
RefNo | Code | ID
--------+----------+------
1234 100 5
表 2:
RefNo | Code | ID
--------+----------+------
1234 30 1
5678 40 2
1234 50 3
5678 60 4
1234 100 5
现在,表 2 中 1234 有 3 条记录。如果上次上传的代码为 0,我想将表 3 中的代码更新为 100。如何选择上次上传的记录?
SELECT *
FROM table2 a
JOIN table 1 b ON a.refno = b.refno
WHERE a.id = (SELECT ???)
我不知道如何选择 ID = 3(最后上传的一个)而不是多个 ID。
【问题讨论】:
-
table3的结构是什么样的
-
“最后上传的代码”在哪里?
-
本例中最后上传的代码是50
-
``` 表 3 RefNo |代码 |留言 | ID ```
-
为什么最后上传的代码是 50 而不是 100
标签: sql sql-server inner-join