【发布时间】:2017-11-23 10:23:21
【问题描述】:
我很难在同一个表中将数据从一行复制到另一行。基本上,我有一个情况,其中[I/O#] 列等于'Client1' 但我想让[I/O#] 列等于'Client2' 而不删除归因于Client1 的数据,即我想保留与Client1 但只需将名称替换为 Client2。
我在我的 php 文件中尝试了以下 sql 查询,但没有成功:
$sql_UPDATE_query ="UPDATE [$connectionInfo[Database]].[dbo].[form_record]
SET
[Last_Edit] = newdata.[Last_Edit],
[User_Name] = newdata.[User_Name],
[Computer_Name] = newdata.[Computer_Name],
[form_name] = newdata.[form_name],
[Date] = newdata.[Date],
[facility] = newdata.[facility],
[Count] = newdata.[Count],
[Start_Time] = newdata.[Start_Time],
[Stop_Time] = newdata.[Stop_Time],
[MW/Hrs_Start] = newdata.[MW/Hrs_Start],
[MW/Hrs_Stop] = newdata.[MW/Hrs_Stop],
[M³] = newdata.[M³],
[MCF] = newdata.[MCF],
[Litres] = newdata.[Litres],
[Description] = newdata.[Description],
[Lock] = newdata.[Lock]
FROM
(
SELECT
[Last_Edit],
[User_Name],
[Computer_Name],
[form_name],
[Date],
[facility],
[Count],
[Start_Time],
[Stop_Time],
[MW/Hrs_Start],
[MW/Hrs_Stop],
[M³],
[MCF],
[Litres],
[Description],
[Lock]
FROM [$connectionInfo[Database]].[dbo].[form_record]
WHERE
[I/O#] = '$PrevIO'
) newdata
WHERE
[I/O#] = '$IO'";
顺便说一句,$PrevIO 和 $IO 已经在我的 php 文件中定义(只是没有显示),所以这不是错误所在。
现在,假设$PrevIO='Client1' 和$IO='Client2。我怎样才能将表[form_record] 中属于Client1 的所有数据(行)归因于并将其复制到Client2,然后最终删除Client1 甚至更好,只需简单地替换名称,但你们知道得更好。我认为newdata 可以用作同一个表form_record 的别名表,但它似乎不起作用。
我使用的是 Microsoft SQL 2005 Server。
【问题讨论】:
标签: php sql sql-server sql-server-2005