gpt4 book ai didi

mysql - SQL 更新表并仅插入包含另一个表中选定字段的新行

转载 作者:行者123 更新时间:2023-11-29 11:51:45 26 4
gpt4 key购买 nike

我正在尝试更新 2 个站点的 mysql 数据库,以便拥有相同的产品,我需要找到一个查询,该查询将仅将新产品线添加到产品表中,我正在尝试:

INSERT INTO pre_upde_prop 
(id
,pro_name
,pro_alias
,agent_id
,ref
,category_id
,price
,pro_small_desc
,pro_full_desc
,pro_type
,isFeatured
,published
,isSold
,note
,city
,state
,country
,province
,postcode
,hits
,created
,modified
,bed_room
,square_feet
,lot_size
,number_of_floors
,parking
,address
)
SELECT id
, name
, alias
, agent_id
, ref
, cid
, price
, description
, text
, type
, featured
, published
, available
, description
, lid
, sid
, cyid
, lid
, postcode
, hits
, listdate
, refresh_time
, bedrooms
, area
, covered_area
, garage
, garage
, years
FROM pre2_properties_products;

但是当我运行此查询时,它会添加所有行的重复项。我需要找到一个查询,例如,在行id号6000处开始插入,例如,在6000之后仅插入新行。

两个表具有相同的产品 ID。

最佳答案

您需要某种方法来限制通过 INSERT 进入的记录。当前您正在没有任何条件的情况下从表中进行选择。您需要限制该 SELECT 语句的结果以消除任何已存在的记录。

如果可以很容易地将 WHERE ID > 6000 添加到您所显示的查询末尾,那么除了临时更新之外,这几乎没有什么用处。更稳定的方法是 a) 对表的受挫连接,或 b) WHERE NOT IN/WHERE NOT EXISTS 子句:

方法0:

INSERT INTO pre_upde_prop (...) 
SELECT ...
FROM pre2_properties_products
WHERE id > 6000;

方法一:

INSERT INTO pre_upde_prop (...) 
SELECT ...
FROM pre2_properties_products AS a
LEFT JOIN pre_udpe_prop AS b ON b.ID = a.ID
WHERE b.ID IS NULL

方法2:

INSERT INTO pre_upde_prop (...) 
SELECT ...
FROM pre2_properties_products AS a
WHERE id NOT EXISTS (
SELECT id FROM pre_udpe_prop
);

关于mysql - SQL 更新表并仅插入包含另一个表中选定字段的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33944497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com