我正在尝试编写一个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)
希望足够清楚 - 任何帮助都非常感激。
答案 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表中。