1

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

(我知道重复记录表明数据库结构不好,但我没有设计数据库,也无法重做所有工作 - 它是在 wordpress 上运行的 shopp 电子商务数据库。)

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

根据这些记录...

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

我想做这样的事情..

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

希望这足够清楚 - 非常感谢任何帮助。

4

3 回答 3

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'
于 2010-04-28T23:34:23.383 回答
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
于 2010-04-28T23:34:56.643 回答
0

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

于 2015-05-26T11:57:50.837 回答