Mysql 如何将此选择转换为删除
我有一组基本上需要“清理”的数据 用户在表单中输入他们最喜欢的香水,在表单上,我会自动完成以帮助选择,并希望减少拼写错误,这对手头的任务至关重要 例如,以下是我拥有的关于Paco Rabanne 100万种产品的数据——然而,我希望他们选择Paco Rabanne 100万,但我不希望他们有各种乳液、肥皂、除臭剂等的选择——我感兴趣的是品牌和香水的选择 我所拥有的数据示例如下所示Mysql 如何将此选择转换为删除,mysql,sql,select,sql-delete,Mysql,Sql,Select,Sql Delete,我有一组基本上需要“清理”的数据 用户在表单中输入他们最喜欢的香水,在表单上,我会自动完成以帮助选择,并希望减少拼写错误,这对手头的任务至关重要 例如,以下是我拥有的关于Paco Rabanne 100万种产品的数据——然而,我希望他们选择Paco Rabanne 100万,但我不希望他们有各种乳液、肥皂、除臭剂等的选择——我感兴趣的是品牌和香水的选择 我所拥有的数据示例如下所示 Paco Rabanne 1 Million Gift Set Paco Rabanne 1 Million Deo
Paco Rabanne 1 Million Gift Set
Paco Rabanne 1 Million Deodorant Stick 75ml
Paco Rabanne 1 Million Deodorant
Paco Rabanne 1 Million Eau de Toilette
Paco Rabanne 1 Million Gift Set 50ml
Paco Rabanne 1 Million Shower Gel 150ml
Paco Rabanne 1 Million Eau De Toilette Spray 100ml
Paco Rabanne 1 Million After Shave Lotion 100ml
我有一个查询,它在项目标题中删除某些单词,并显示剩下的内容
查询:
select DISTINCT( TRIM( LEFT(title,
IF( LOCATE('Deodorant', title), LOCATE('Deodorant', title) - 1,
IF( LOCATE('Shower', title), LOCATE('Shower', title) - 1,
IF( LOCATE('Refillable', title), LOCATE('Refillable', title) - 1,
IF( LOCATE('Spray', title), LOCATE('Spray', title) - 1,
IF( LOCATE('ml', title), LOCATE('ml', title) - 1,
999
)
)
)
))))) FROM `PRprod_FRAGRANCES`
这基本上是从表中进行选择,同时省略标题中带有除臭剂或淋浴等的任何重复行,但我希望永久删除记录,而不是每次都运行此查询,因为表中有200000多行,这非常昂贵
本质上,我想把查询转过来,这样它就不会显示我不需要的行,而是实际删除它们
除非有其他方法来解决这个问题
这是表定义:
field, type, NULL, Key, Default, Extra
autoc_id, int(11), NO, PRI, , auto_increment
title, varchar(128), YES, , ,
genre, varchar(128), YES, , ,
author, varchar(128), YES, , ,
actors, varchar(256), YES, , ,
artist, varchar(128), YES, , ,
main_category, varchar(128), NO, , ,
dateadded, timestamp, NO, , CURRENT_TIMESTAMP,
你的问题还是有点模糊 在您的示例中,您有数据
Paco Rabanne 1 Million Gift Set
Paco Rabanne 1 Million Deodorant Stick 75ml
Paco Rabanne 1 Million Deodorant
Paco Rabanne 1 Million Eau de Toilette
Paco Rabanne 1 Million Gift Set 50ml
Paco Rabanne 1 Million Shower Gel 150ml
Paco Rabanne 1 Million Eau De Toilette Spray 100ml
Paco Rabanne 1 Million After Shave Lotion 100ml
不过,您的表中还有其他字段吗?比如身份证等等?还是仅仅是一个领域
上面的例子是只出现过一次,还是每次都出现过多次
根据代码将数据分为以下组
Original | After Processing
Paco Rabanne 1 Million Deodorant | Paco Rabanne 1 Million
Paco Rabanne 1 Million Deodorant Stick 75ml | Paco Rabanne 1 Million
Paco Rabanne 1 Million Shower Gel 150ml | Paco Rabanne 1 Million
Paco Rabanne 1 Million Eau De Toilette Spray 100ml | Paco Rabanne 1 Million Eau De Toilette Spray 10
Paco Rabanne 1 Million Gift Set 50ml | Paco Rabanne 1 Million Gift Set 5
Paco Rabanne 1 Million After Shave Lotion 100ml | Paco Rabanne 1 Million After Shave Lotion 10
Paco Rabanne 1 Million Gift Set | Paco Rabanne 1 Million Gift Set
Paco Rabanne 1 Million Eau de Toilette | Paco Rabanne 1 Million Eau de Toilette
注意:我认为您不希望在ml
过滤器中使用-1
。它将100ml
变成10
对于第一组,您是否希望删除所有记录并替换为一条记录,该记录名为justPaco Rabanne 100万除臭剂
?还是要删除其中的两个,并保留其中的一个?如果是这样,我们应该如何决定保留哪一个
在接下来的三个组中,每个组只有一条记录,但您已将0ml
从末尾切掉。是否要用缩短的版本替换这些记录?还是什么都不做
最后两组也只有一条记录,而过滤器对他们没有任何影响。他们会被单独留下吗
那么,一旦您处理了这个,新数据会一次又一次地被添加吗?您需要可以重复运行的代码,还是只需要一次运行就可以了
不幸的是,如果没有更多的信息,我认为我们不会有多大帮助。在我看来,这更像是一个不适当的数据模型:
如果您可以控制数据存储在多少个表中,并且可以随意添加表,那么最干净的解决方案是有两个表:一个用于香水,一个用于包装 最简单的解决方案是将
与
一起使用。e、 g.带结果()从结果中删除
@bradcristie-不在MySQL中,不在MySQL中。它不支持/CTEsD'oh。读取错误,无法识别MySQL。抱歉,我在考虑SQL-Server@DarrenSweeney-给我们更多关于表格的信息和您需要的逻辑。。。这些记录有主键吗?假设我们识别了十几条将相同结果返回给您提供的函数的记录,我们如何识别要删除的记录?等etc@Dems我重写了这个问题,因为它有点混乱,希望现在更清楚。同意,但你如何分割数据,这是最初的问题。是的,不充分我同意,但必须处理我提供的信息我知道这很混乱,但恐怕我对数据集无能为力-理想情况下,我想为整个数据集返还Paco Rabanne 100万,就这一行,但不确定是否能够做到。最初只运行一次,但我可以将其视为是,新数据将定期出现,因此我知道它始终是一项正在进行的工作。虽然最初的问题仍然存在,但是否可以将SELECT语句反转为DELETE语句?我的问题仍然存在。“将选择转换为删除”不是有效的问题。我们需要了解更多关于桌子的信息。。。我问这个表是否有id字段。你有完整的表格定义吗?