簡體   English   中英

將數據從同一行中的一行復制到另一行中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM