![](/img/trans.png)
[英]SQL QUERY multiple search in one row to find data from another row in the same table
[英]Copying data from one row to another in the same table SQL
我很難將數據從同一行的一行復制到另一行。 基本上,我有一種情況,其中[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
。 我如何將屬於Client1的表[form_record]
中的所有數據(行)屬性化,並將其復制到Client2,然后最終刪除Client1甚至更好,只需替換名稱即可,但是你們知道的更多。 我以為newdata
可以用作相同表form_record
的別名表,但似乎不起作用。
我正在使用Microsoft SQL 2005 Server。
這樣就可以了,您只需要在表中包括適當的聯接即可。
$sql_UPDATE_query ="UPDATE UPD
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 [$connectionInfo[Database]].[dbo].[form_record] UPD
INNER JOIN
(
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 ON ***newdata.field = UPD.field***
WHERE
[I/O#] = '$IO'";
您的join condition
丟失:
$sql_UPDATE_query ="UPDATE A
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 [$connectionInfo[Database]].[dbo].[form_record] A
INNER JOIN
(
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 ON newdata.field = A.field
WHERE
[I/O#] = '$IO'";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.