[英]SQL copy from one table to another
我需要將某些字段從一張表復制到另一張表。
第一個表稱為phpbb_karma,第二個表為smf_log_karma
我需要以下結構:
user_id -> id_executor
poster_id -> id_target
log_time -> karma_time
action -> karma_action
我運行了以下查詢:
INSERT INTO
`smf_log_karma`
(`id_executor`, `id_target`, `log_time`, `action`)
SELECT
(`user_id`, `poster_id`, `karma_time`, `karma_action`)
AS
`id_executor`, `id_target`, `log_time`, `action`
FROM
`phpbb_karma`
它回來了
#1241 - Operand should contain 1 column(s)
任何幫助,將不勝感激,謝謝。
INSERT INTO
`smf_log_karma`
(`id_executor`, `id_target`, `log_time`, `action`)
SELECT
`user_id`, `poster_id`, `karma_time`, `karma_action`
FROM
`phpbb_karma` AS T1
WHERE NOT EXISTS (
SELECT 1
FROM `smf_log_karma` AS T2
WHERE
(T2.id_executor = T1.user_id) );
您需要從兩個表中取出(`)符號
INSERT INTO smf_log_karma
(id_executor, id_target, log_time, action)
SELECT user_id, poster_id, karma_time, karma_action
FROM
phpbb_karma
並確保您的表和列是相同的數據類型並且完全相同,並且如果PK無法復制id_executor
您是說要復制某些字段而不是全部嗎? 如果是這樣,我認為您忘記了在語法中使用“值”,這就是原因。 您必須使用insert into ....(...) 值選擇...。
您只需要執行以下操作即可復制所有行:
INSERT INTO smf_log_karma
(id_executor, id_target, log_time, action)
SELECT user_id, poster_id, karma_time, karma_action
FROM
phpbb_karma
盡管選擇列名不是必需的,但很有用,但您需要
enter code here
INSERT INTO smf_log_karma
(id_executor,
id_target,
log_time,
action)
SELECT
user_id as id_executor,
poster_id as id_target,
karma_time as log_time,
karma_action as action
FROM phpbb_karma
您可以在這里看到它的運行情況
INSERT INTO `smf_log_karma` (`id_executor`, `id_target`, `log_time`, `action`)
SELECT `user_id` AS `id_executor`, `poster_id` AS `id_target`, `karma_time` AS `log_time`, `karma_action` AS `action`
FROM `phpbb_karma`
我是數據遷移小組的成員。
因此,請嘗試使用該查詢,讓我知道它是否有效。
INSERT INTO `smf_log_karma`
(
`id_executor`,
`id_target`,
`log_time`,
`action`
)
SELECT
`user_id`,
`poster_id`,
`karma_time`,
`karma_action`
FROM
`phpbb_karma` AS T1
where T1.user_id
not in (select `id_executor` from `smf_log_karma`)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.