Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将此选择转换为删除_Mysql_Sql_Select_Sql Delete - Fatal编程技术网

Mysql 如何将此选择转换为删除

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 100万种产品的数据——然而,我希望他们选择Paco Rabanne 100万,但我不希望他们有各种乳液、肥皂、除臭剂等的选择——我感兴趣的是品牌和香水的选择

我所拥有的数据示例如下所示

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

对于第一组,您是否希望删除所有记录并替换为一条记录,该记录名为just
Paco Rabanne 100万除臭剂
?还是要删除其中的两个,并保留其中的一个?如果是这样,我们应该如何决定保留哪一个

在接下来的三个组中,每个组只有一条记录,但您已将
0ml
从末尾切掉。是否要用缩短的版本替换这些记录?还是什么都不做

最后两组也只有一条记录,而过滤器对他们没有任何影响。他们会被单独留下吗


那么,一旦您处理了这个,新数据会一次又一次地被添加吗?您需要可以重复运行的代码,还是只需要一次运行就可以了



不幸的是,如果没有更多的信息,我认为我们不会有多大帮助。

在我看来,这更像是一个不适当的数据模型:


如果您可以控制数据存储在多少个表中,并且可以随意添加表,那么最干净的解决方案是有两个表:一个用于香水,一个用于包装

最简单的解决方案是将
一起使用。e、 g.
带结果()从结果中删除
@bradcristie-不在MySQL中,不在MySQL中。它不支持/CTEsD'oh。读取错误,无法识别MySQL。抱歉,我在考虑SQL-Server@DarrenSweeney-给我们更多关于表格的信息和您需要的逻辑。。。这些记录有主键吗?假设我们识别了十几条将相同结果返回给您提供的函数的记录,我们如何识别要删除的记录?等etc@Dems我重写了这个问题,因为它有点混乱,希望现在更清楚。同意,但你如何分割数据,这是最初的问题。是的,不充分我同意,但必须处理我提供的信息我知道这很混乱,但恐怕我对数据集无能为力-理想情况下,我想为整个数据集返还Paco Rabanne 100万,就这一行,但不确定是否能够做到。最初只运行一次,但我可以将其视为是,新数据将定期出现,因此我知道它始终是一项正在进行的工作。虽然最初的问题仍然存在,但是否可以将SELECT语句反转为DELETE语句?我的问题仍然存在。“将选择转换为删除”不是有效的问题。我们需要了解更多关于桌子的信息。。。我问这个表是否有id字段。你有完整的表格定义吗?