当两个 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 中新创建的行中的任何其他字段都可以有空值,这不会影响我正在尝试做的事情。
你可以做两件事:
设置列的默认值 call_sid。这样您就不需要更改查询。
如果您不想设置默认值,并且该值不重要(请注意,它可能对某些其他进程很重要),那么您可以更改您的查询:
INSERT INTO call_logs (user, lead, call_sid)
SELECT owner, lead_id, 0
FROM leads
WHERE owner = 12345
我有一个名为 leads
的 table 和一个名为 call_logs
的 table,每个都有不同的列,但只有两列来自潜在客户,三列来自 [=46] =] 相关。
我需要在 call_logs
table 中为所有者为“12345”的 leads
table 中的每一行插入新行。潜在客户 table 中的“所有者”列值需要输入到 call_logs table 的“用户”列中。同样,需要将 leads table 中的“lead_id”列值输入到 call_logs table.
最后,我需要用今天的日期更新每个新创建的行的 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 中新创建的行中的任何其他字段都可以有空值,这不会影响我正在尝试做的事情。
你可以做两件事:
设置列的默认值 call_sid。这样您就不需要更改查询。
如果您不想设置默认值,并且该值不重要(请注意,它可能对某些其他进程很重要),那么您可以更改您的查询:
INSERT INTO call_logs (user, lead, call_sid) SELECT owner, lead_id, 0 FROM leads WHERE owner = 12345