当两个 table 没有任何共享列名时,如何使用来自一个 table 的数据在第二个 table 中创建新行

How can I use data from one table to create new rows in a second table when the two tables don't have any shared column names

我有一个名为 leads 的 table 和一个名为 call_logs 的 table,每个都有不同的列,但只有两列来自潜在客户,三列来自 [=46] =] 相关。

我需要在 call_logs table 中为所有者为“12345”的 leads table 中的每一行插入新行。潜在客户 table 中的“所有者”列值需要输入到 call_logs table 的“用户”列中。同样,需要将 leads table 中的“lead_id”列值输入到 call_logs table.

的“lead”列中

最后,我需要用今天的日期更新每个新创建的行的 call_started 值。

因此导致 table 数据:

owner lead_id first_name last_name
12345 54321 John Smith
43212 43928 Jane Doe

应该插入call_logs table:

user lead call_started call_id
12345 54321 2022-05-02 10:50:43
82919 73261 2022-04-21 09:32:12 "this is pre-existing data"

我试过以下变体:

UPDATE call_logs cl 
JOIN leads l ON l.owner = cl.user 
SET cl.call_started = CURDATE(), cl.user = 12345 
WHERE l.owner = 12345
UPDATE call_logs
LEFT JOIN leads ON call_logs.user = leads.owner AND call_logs.lead = leads.lead_id
SET call_started = CURDATE()

在这个片段中,我试图放弃 UPDATE JOIN 的想法,只是创建新行,然后在单独的片段中更新 call_started 值。

INSERT INTO call_logs (user, lead)  
SELECT owner, lead_id
  FROM leads
 WHERE owner = 12345

前两个 sql 片段 运行 但没有改变任何东西,最后一个片段给我一个错误说明

Field 'call_sid' doesn't have a default value

call_sid 字段是 call_logs table 中实际的第一列,但与我的目的无关。 call_logs table 中新创建的行中的任何其他字段都可以有空值,这不会影响我正在尝试做的事情。

你可以做两件事:

  1. 设置列的默认值 call_sid。这样您就不需要更改查询。

  2. 如果您不想设置默认值,并且该值不重要(请注意,它可能对某些其他进程很重要),那么您可以更改您的查询:

    INSERT INTO call_logs (user, lead, call_sid)  
    SELECT owner, lead_id, 0
    FROM leads
    WHERE owner = 12345