SQL Query基于If语句复制记录

时间:2010-04-28 23:28:45

标签: mysql sql shopp

我正在尝试编写一个SQL查询,它将根据另一个表中的字段复制记录。我正在运行mySQL 5.

(我知道重复记录显示数据库结构不好,但我没有设计数据库,也无法重做所有 - 这是一个在wordpress上运行的购物电子商务数据库。)

每个具有特定属性的产品都需要链接到相同的几个图像,因此产品在表中每个图像需要一行 - 数据库实际上不包含图像,只包含文件名。 (图像是剪贴画供客户选择)

基于这些记录...

SELECT * FROM `wp_shopp_spec` WHERE name='Can Be Personalised' and content='Yes'

我想做这样的事情......

对于与该查询匹配的每条记录,从wp_shopp_asset复制记录5134-5139,但更改id以使其唯一,并将单元格'parent'中的单元格设置为具有表wp_shopp_spec中的'product'值。这意味着为匹配上述查询的每条记录创建了6条新记录,所有记录都在“父”中具有相同的值,但具有唯一的ID,并且每个其他列都从原始列中复制(即记录5134-5139)

希望足够清楚 - 任何帮助都非常感激。

3 个答案:

答案 0 :(得分:0)

听起来你需要交叉加入你想要的资产价值。如下所示:

Select spec.parent, asset.id as uniqueid, ...
From`wp_shopp_spec` spec
    Cross Join  (
                Select id
                From `wp_shopp_asset`
                Where Id Between 5134 And 5139
                ) asset
Where name='Can Be Personalised' 
    And content='Yes'

答案 1 :(得分:0)

INSERT wp_shopp_asset
(parent, col1, col2, ...)
SELECT wp_shopp_spec.product, wp_shopp_asset.col1, wp_shopp_asset.col2, ...
FROM wp_shopp_spec
CROSS JOIN wp_shopp_asset
WHERE wp_shopp_spec.name='Can Be Personalised'
  AND wp_shopp_spec.content='Yes'
  AND wp_shopp_asset.id BETWEEN 5134 AND 5139

答案 2 :(得分:0)

对于正在寻找此类信息的人,请知道shopp_spec表已不再使用。所有规格(细节)都存储在shopp_meta表中。

相关问题