【发布时间】:2011-09-23 08:19:38
【问题描述】:
我有以下架构:
id | order_ref | description | price
目前我有以下重复问题:
1 | 34567 | This is the description | 19.99
2 | 34567 | This is the description | 13.99
这是因为我导入的数据中每个项目的描述都重复了。有没有办法我可以保留第一行,然后将后续(最多约 20 行)的描述更新为“AS ABOVE”?
1 | 34567 | This is the description | 19.99
2 | 34567 | - AS ABOVE - | 13.99
谢谢
-------已更新
UPDATE documents_orders_breakdown
SET `desc` = '- AS ABOVE -'
WHERE NOT id IN (SELECT id
FROM documents_orders_breakdown AS D
WHERE D.`desc` <> `desc`
ORDER BY D.id
LIMIT 1)
但这会返回 [Err] 1235 - 此版本的 MySQL 尚不支持“LIMIT & IN/ALL/ANY/SOME 子查询”
--------更新
UPDATE documents_orders_breakdown
SET `desc` = '- AS ABOVE -'
WHERE NOT id IN (SELECT MIN(id)
FROM documents_orders_breakdown AS t
WHERE t.`desc` = `desc`)
现在返回 [Err] 1093 - 您无法在 FROM 子句中指定目标表 'documents_orders_breakdown' 进行更新
【问题讨论】:
-
感谢安德烈的回复。正如您所说,架构是正确的,但是具有相同描述的多行的问题来自我必须导入数据的方式。数据最初采用 Filemaker (4!) 格式。每个 'order_ref' 都有描述 |价格 |数量,但不是每个 order_ref 有 1 行,而是格式 order_ref |描述 |值 1 |价格 1 |值 2 |价格 2. 此外,每个对应的描述仅由“随机”换行符分隔,因此不可能将描述与每个“行”分开。
-
我复制了描述,这样至少我们还有可用的历史数据。展望未来,每个描述都匹配它自己的价值 |价格应该是架构。排序应该在这里起作用,因为它们在导入之前已正确排序,因此第一个描述(按 id)将是要保留的。
标签: mysql sql sql-update mysql-error-1093