解决了。这是我的解决方案。
UPDATE oxarticles a
SET a.oxean = ( SELECT oxean FROM ( SELECT oxean, oxparentid, oxartnum FROM oxarticles) tmp WHERE tmp.oxparentid = a.oxid AND tmp.oxartnum LIKE '%GrLos%' LIMIT 0,1),
a.oxstock = ( SELECT oxstock FROM ( SELECT oxstock, oxparentid, oxartnum FROM oxarticles) tmp WHERE tmp.oxparentid = a.oxid AND tmp.oxartnum LIKE '%GrLos%' LIMIT 0,1),
a.oxinsert = ( SELECT oxinsert FROM ( SELECT oxinsert, oxparentid, oxartnum FROM oxarticles) tmp WHERE tmp.oxparentid = a.oxid AND tmp.oxartnum LIKE '%GrLos%' LIMIT 0,1),
a.oxsubclass = ( SELECT oxsubclass FROM ( SELECT oxsubclass, oxparentid, oxartnum FROM oxarticles) tmp WHERE tmp.oxparentid = a.oxid AND tmp.oxartnum LIKE '%GrLos%' LIMIT 0,1),
a.oxsort = ( SELECT oxsort FROM ( SELECT oxsort, oxparentid, oxartnum FROM oxarticles) tmp WHERE tmp.oxparentid = a.oxid AND tmp.oxartnum LIKE '%GrLos%' LIMIT 0,1),
a.oxvarname = '',
a.oxvarstock = 0,
a.oxvarcount = 0,
a.oxvarminprice = 0.00,
a.oxvarmaxprice = 0.00
仅供参考:
AND tmp.oxartnum LIKE '%GrLos%'
只是标识表数据中的某种数据类型。就我而言,有可能有真正变体的文章。更新过程不能触及这些,所以我只在“oxartnum”列中选择包含字符串“GrLos”的文章。
由于 MySQL 不支持同一个表中的 udate 操作,但您必须强制 MySQL 创建一个临时表。这就是我们对 set 操作中的子选择要做的事情:
SET a.oxean = ( SELECT oxean FROM ( SELECT oxean, oxparentid, oxartnum FROM oxarticles) tmp WHERE tmp.oxparentid = a.oxid AND tmp.oxartnum LIKE '%GrLos%' LIMIT 0,1)
如果一篇文章有多个变体,我将子选择结果限制为 1
limit 0,1
也许这可能会在未来对其他人有所帮助。