将忽略插入数据库,复制旧记录并更改新记录中的 1 个字段

问题描述 投票:0回答:1
$sql = {"INSERT IGNORE INTO  membership  WHERE Member_id= 'A4C1905' (`Name`,`GivenName`,`SpouceName`,`SpouceGiven`,`Address`,`City`,`Prov`,`PostalCode`,`Phone`,`Email`,`Secondary Email`,`Region`,`Year`,`visible`,`Mailing_Info`,`Member_ID`,`LastUpdateDate`,`Payment_Date`,`Payment_Type`,`Payment_Amount`,`Payment_Comment`,`Payment_Year`,`Nonrenreason`)   VALUES ('Ruck','John', 'Joan', 'Clint', '2045 Lakeshore Blvd. W. Suite # 3803 ', 'Toronto ', 'ON', 'L0P 1K0', '905-877-9812', '[email protected]', '', 'GPR', '2025', 'N', 'Mr. Clint Adcock','' , '2024-10-14', '2024-10-14', 'Cheque', '50', 'no comment', '2025','ill' )";

得到以下消息,这是由where语句引起的。

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在 'WHERE Member_id= 'A4C1905' (

Name
,
GivenName
,
SpouceName
,
SpouceGiven
,`Addre' at line 1

附近使用的正确语法

删除 where 语句,它就可以工作了。 问题需要 where 语句来获取我需要从中复制值的记录。 我知道如果我知道工作地点,这些值可以是“”。

php sql insert where-clause ignore
1个回答
0
投票

您必须使用

SELECT
查询来获取旧行中的值。

INSERT IGNORE INTO membership
(`Name`,`GivenName`,`SpouceName`,`SpouceGiven`,`Address`,`City`,`Prov`,`PostalCode`,`Phone`,
 `Email`,`Secondary Email`,`Region`,`Year`,`visible`,`Mailing_Info`,`Member_ID`,`LastUpdateDate`,
 `Payment_Date`,`Payment_Type`,`Payment_Amount`,`Payment_Comment`,`Payment_Year`,`Nonrenreason`,
 columns_to_keep)
SELECT 'Ruck','John', 'Joan', 'Clint', '2045 Lakeshore Blvd. W. Suite # 3803 ', 'Toronto ', 
    'ON', 'L0P 1K0', '905-877-9812', '[email protected]', '', 'GPR', '2025', 'N', 'Mr. Clint Adcock',
    '' , '2024-10-14', '2024-10-14', 'Cheque', '50', 'no comment', '2025','ill',
    columns_to_keep
FROM membership
WHERE member_id = 'A4C1905'

columns_to_keep
替换为您从旧行复制到新行的所有列。

© www.soinside.com 2019 - 2024. All rights reserved.