此查询结果每次都不同:
update product_models
set category_id = (select id from categories order by RAND() limit 1)
反复不同的计数:
884条记录受到影响
878条记录受到影响
877条记录受到影响
892条记录受到影响
893条记录受到影响
883条记录受到影响
885条记录受到影响
怎么回事?
在类别中有22行
在产品型号 - 900
在产品中 - 600
子查询没有条件,没有连接,总是返回一行
主查询也没有条件或连接,所以它也应该返回一个固定的数字。
因此,每次执行都应该返回900个产品模型,每个p.m应该由子查询更新
答案 0 :(得分:1)
我无法理解为什么你无法理解,因为你使用随机函数获取categoryId并且每次返回其他categoryId。
说明::
每次运行此子查询时:
`select id from categories order by RAND() limit 1`
生成了一个新的ID,假设我们首次运行Category1
,第二次运行Category2
,依此类推。
所以现在每次运行时你的更新都变成了::
First Run :: update product_models set category_id = Category1
Second Run :: update product_models set category_id = Category2
Third Run :: update product_models set category_id = Category3
由于表product_models
中的行数对于不同的类别是不同的,因此每次运行时更新的行数都不同。
希望你明白原因。
如果您有任何疑问,请随时询问。
答案 1 :(得分:1)
假设每次运行查询时数据都相同,原因是如果数据没有更改,行不会计为affected
。因此,如果选择5
作为随机ID,则不计算已为category_id 5
的行。
答案 2 :(得分:0)
您正在对类别进行排序,并且每个类别都有不同数量的相关产品。或者表格正在改变。