14

我正在尝试从 select 语句中插入表,并向行添加其他参数,例如-

SELECT 
        Appt_ID,
        Pracitioner_ID,
        Appt_Book_ID,
        Start_Time,
        UR_NO,
        [Type],
       [Description]
FROM @TempWaiting,
 @EndTime,
 @PatientID, 
 @Title, 
 @FirstName, 
 @LastName, 
 @Surname, 
 @DOB
INTO PS_WAITING_LIST(Appt_ID,   
        Pracitioner_ID,
        Appt_Book_ID,
        Start_Time,
        UR_NO,
        [Type],
        [Description],
        End_Time,
        Patient_ID, 
        Title,
        First_Name,
        Middle_Name,
        Surname,
        DOB)

这是在一个存储过程中,它说的只是 INTO 之后的错误。

我还尝试将其重写为-

insert into PS_WAITING_LIST (
        Appt_ID,    
        Pracitioner_ID,
        Appt_Book_ID,
        Start_Time,
        UR_NO,
        [Type],
        [Description],
        End_Time,
        Patient_ID, 
        Title,
        First_Name,
        Middle_Name,
        Surname,
        DOB)
SELECT 
        Appt_ID,
        Pracitioner_ID,
        Appt_Book_ID,
        Start_Time,
        UR_NO,
        [Type],
        [Description]
FROM @TempWaiting,
 @EndTime,
 @PatientID, 
 @Title, 
 @FirstName, 
 @LastName, 
 @Surname, 
 @DOB

这会引发错误,说明选择值的数量必须与插入列的数量匹配。很明显,事实并非如此。

我也试过插入表(col1,col2..)Select * from(select(...),col3,col9)

4

5 回答 5

24

通常它是这样工作的

insert into your_table (col1, col2, col3)
select some_column, @aVariable, 'static_string'
from another_table
于 2013-10-22T05:38:09.613 回答
2

假设 @tempWaiting 是一个变量表,语句应该是这样的。

    insert into PS_WAITING_LIST (
    Appt_ID,    
    Pracitioner_ID,
    Appt_Book_ID,
    Start_Time,
    UR_NO,
    [Type],
    [Description],
    End_Time,
    Patient_ID, 
    Title,
    First_Name,
    Middle_Name,
    Surname,
    DOB)
SELECT 
    Appt_ID,
    Pracitioner_ID,
    Appt_Book_ID,
    Start_Time,
    UR_NO,
    [Type],
    [Description],
    @EndTime,
    @PatientID, 
    @Title, 
    @FirstName, 
    @LastName, 
    @Surname, 
    @DOB
FROM @TempWaiting
于 2013-10-22T05:43:31.670 回答
2

如果您有一个包含许多列的表,将它们全部列出可能会很乏味。要将列添加到插入的末尾,例如,loggedAT 或 recreatedAt 时间戳,可以执行以下操作。首先创建一个 dts 列作为最后一列,然后

INSERT INTO users_log SELECT *, NOW() FROM users WHERE id=?;

在这种情况下,我们现在知道该列何时添加到 users_log 表中。最后一种情况是我们可能还需要一个特定于 users_log 表的主键。让我们再次修改 users_log 表,方法是在表的末尾添加一个“key”列,将其设置为 PK、AUTO、UNSIGNED。我们现在可以使用以下内容填充该 id:

INSERT INTO users_log SELECT *, NOW(), '' FROM users WHERE id=?;

现在我们有了用户记录的精确副本,包括来自用户表的 PK,在我们的 users_log 表中,我们现在可以跟踪记录何时被复制并生成自己的 PK。请注意,需要修改 users_log 表以从用户表中的 id 中删除 PK,以防止 id 冲突。

于 2018-05-10T17:45:45.760 回答
0

您还可以尝试以下方法:

Insert Into CustomerNew (CustomerId, CustomerName) 
  SELECT CustID, Name
  FROM CustomerOld WHERE CustomerId Is not Null
于 2018-06-25T19:23:52.310 回答
0

我有两张桌子,第一张桌子和第二张桌子

  • 第一个表包含产品和价格
  • 第二个表有列月和列总计

我想用第一个表中的产品总和加上月份来更新第二个表。

我发现这个查询很有用我想你可能会解决你的问题

INSERT INTO second (month, total) SELECT 'JANUARY' SUM(PRICE) AS TOTAL FROM first
于 2021-09-30T07:50:46.770 回答