0

鉴于此表结构,

categories{id}
product_models{id, category_id}
products{product_model_id, category_id}

已经填充了,但是使用product_models.category_id,products.category_id并且products.product_model_id全部设置为NULL,我需要一个查询来“连接”它们,执行以下操作:

  1. 将 all , 设置为表product_models.category_id中的随机值categories
  2. 将 all , 设置为表products.product_model_id中的随机值product_models
  3. 将 each 设置products.category_id为新分配product_models记录的 category_id 的值。

可以在单个查询中完成吗?

4

2 回答 2

1

RAND 函数在任何查询中只执行一次,并且无论使用多少次都有效地“锁定”到单个值。

于 2013-02-06T08:10:09.240 回答
1

如果我能够理解您的要求,这就是您的要求

 Create Procedure usp_insert
 as
 begin
    declare @rand1 int
    declare @rand2 int
    set @rand1=rand()*10000
    set @rand2=rand()*10000

    insert into categories (id) values (@rand1)
    insert into product_models{id, category_id} values (@rand2,@rand1)
    insert into products{product_model_id, category_id} values (@rand2,@rand1)
End

上面的块将在您的数据库中创建一个过程

执行该过程使用以下代码

exec usp_insert

该过程的每次执行将在每个表中插入一行,例如假设生成的随机数是 3423,2345,那么它将 1. 在类别表中插入一行,3423 作为 id 2. 在 product_models 表中插入一行,3423 作为 category_id和 2345 作为 id 3. 在 product_models 表中插入一行,其中 3423 作为 category_id,2345 作为 product_model_id

您可以根据需要调整插入查询。

于 2013-02-06T09:29:55.123 回答