如何使用同一查询在mysql中编辑多个不同的行

如何使用同一查询在mysql中编辑多个不同的行,mysql,rows,edit,Mysql,Rows,Edit,我有一个mysql表,其中一行包含词汇表,如下所示: 走吧 马槽 解酸剂 还有一个独特的专栏。问题是并非所有的动词都像上面那样在不定式中有to,所以实际上这个表看起来更像这样: 阿勒戈 马槽 酸解剂 是否可以在没有to的情况下编辑所有这些行,使它们具有to,即。E第二个例子看起来像上面的第一个?否则,我将不得不经历整个过程,并手动编辑它们,正如您可以想象的那样,这非常耗时 很容易看到它们: SELECT * FROM vocab where french not like "to %";

我有一个mysql表,其中一行包含词汇表,如下所示:

  • 走吧
  • 马槽
  • 解酸剂
还有一个独特的专栏。问题是并非所有的动词都像上面那样在不定式中有to,所以实际上这个表看起来更像这样:

  • 阿勒戈
  • 马槽
  • 酸解剂
是否可以在没有to的情况下编辑所有这些行,使它们具有to,即。E第二个例子看起来像上面的第一个?否则,我将不得不经历整个过程,并手动编辑它们,正如您可以想象的那样,这非常耗时

很容易看到它们:

SELECT * FROM vocab where french not like "to %";
但是要编辑它们吗?

当然,请使用更新:

UPDATE vocab 
SET french = CONCAT("to ", french)
where french not like "to %";
当然,请使用更新:

UPDATE vocab 
SET french = CONCAT("to ", french)
where french not like "to %";

我认为您需要更新:

update vocabulary
set french = 
  concat(substring_index(french, ' ', 1), ' to ', substring_index(french, ' ', -1))
where french not like '% to %'; 
请参阅。
结果:


我认为您需要更新:

update vocabulary
set french = 
  concat(substring_index(french, ' ', 1), ' to ', substring_index(french, ' ', -1))
where french not like '% to %'; 
请参阅。
结果:



您的查询至少需要
而不是“%to%”
有一系列字符串函数可以用来解决此问题,但如果是一次性交易,我会使用[REGEXP\u REPLACE]()
french
是唯一一列,并且它包含类似于
'aller to go'
的值吗?有点怀疑aller和to go都在同一列中:-(不,实际上它们在不同的列中,但我在问题中没有说清楚。但这没关系,因为我从下面的答案中得到了我需要使用的逻辑,所以一切正常。您的查询至少需要
而不是“%to%”
有一组字符串函数可以用来解决这个问题问题是,如果是一次性交易,我会使用[REGEXP_REPLACE]()是
法语的唯一列,它包含
“aller to go”
?有点怀疑aller和to go都在同一列中:-(不,事实上它们在不同的专栏中,但我在问题中没有说清楚。但这没关系,因为我从下面的答案中得到了我需要使用的逻辑,所以一切都很好。这只是在开始时将
添加到
。我认为比这稍微复杂一点。根据我的第一条评论,这不是LIKE的工作方式。您将其更改为的内容也不会如预期的那样。也许您应该在dbfiddle中进行测试?是的,我理解您的意思。这只是一个问题,即OP的问题陈述的哪一部分是错误的。如果字段以“to”(或应该)开头我明白了,但是如果你看一下所提供的例子,很明显字符串在中间有(或不)到“他想添加”。是的。我把它看作是坏的表格格式:所示的行包含两个字段。例如“经理”和“吃”。这只是一开始就把
添加到了
中。我认为比这要复杂一点。根据我的第一条评论,这不是LIKE的工作原理。你将其更改为什么也不会像预期的那样。也许你应该在dbfiddle中测试一下?是的,我理解你的意思。这只是一个问题,OP的问题陈述的哪一部分是incor如果字段以“to”(或应该)开头,那么这就起作用了。我明白了,但是如果你提供的例子很清楚,字符串有(或不)在中间,他想添加。)是的。我把它当作坏格式:显示的行包含两个字段。例如“Mangle”和“to Enter”。