gpt4 book ai didi

sql - 在 SQL 中将数据从一个现有行复制到另一现有行?

转载 作者:行者123 更新时间:2023-12-03 06:32:02 28 4
gpt4 key购买 nike

我有一个表格,其中包含特定类(class)(类(class)编号 6)的跟踪数据。

现在我已经为 11 号类(class)添加了新的跟踪数据。

每行数据针对一门类(class)的一名用户,因此对于分配到类(class) 6 和类(class) 11 的用户,有两行数据。

客户希望所有在 2008 年 8 月 1 日之后完成类(class) 6 的用户也将类(class) 11 的完成标记为完成。但是,我不能只是将 6 转换为 11,因为他们想保留类(class)的旧数据6.

因此,对于类(class)编号为 6、标记为完成且日期大于 2008 年 8 月 1 日的每一行,我想在包含该特定类(class) 11 的跟踪的行上写入完成数据用户。

我需要将数据从类(class) 6 行转移到类(class) 11 行,以便将用户分数和发布完成日期等内容移过去。

以下是表的结构:

userID (int)
courseID (int)
course (bit)
bookmark (varchar(100))
course_date (datetime)
posttest (bit)
post_attempts (int)
post_score (float)
post_date (datetime)
complete (bit)
complete_date (datetime)
exempted (bit)
exempted_date (datetime)
exempted_reason (int)
emailSent (bit)

某些值将为 NULL,并且 userID/courseID 显然不会被保留,因为它们已经位于正确的位置。

最佳答案

也许我读错了问题,但我相信您已经插入了类(class) 11 的记录,只需更新那些符合您使用类(class) 6 的数据列出的条件的记录即可。

如果是这种情况,您将需要使用 UPDATE...FROM 语句:

UPDATE MyTable
SET
complete = 1,
complete_date = newdata.complete_date,
post_score = newdata.post_score
FROM
(
SELECT
userID,
complete_date,
post_score
FROM MyTable
WHERE
courseID = 6
AND complete = 1
AND complete_date > '8/1/2008'
) newdata
WHERE
CourseID = 11
AND userID = newdata.userID

See this related SO question for more info

关于sql - 在 SQL 中将数据从一个现有行复制到另一现有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/663154/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com