【问题标题】:Writing An UPDATE statement using CONCAT使用 CONCAT 编写 UPDATE 语句
【发布时间】:2014-09-26 21:36:10
【问题描述】:

我要通过 PMA 进行更新。这似乎很简单,但可能并非如此。我附上了一张数据库表和相关字段的图片。

这是一个包含 90000 条记录的数据库表。 “别名”列中的一些记录正是我需要的结果。比如图中id的743971、743961、743951就完美了。我正在寻找使用 ID 列中的匹配数字更新“别名”列,用连字符连接,并且小写。例如 - 在图像中..第二条记录需要一个别名更新,从“ponder”变为“ponder-743981”。

有没有办法用 CONCAT 进行更新,可以忽略正确的记录,更新不正确的记录。 (忽略该图像中的第一个 ID,没有别名记录是空白的。)感谢您提供的任何帮助!

【问题讨论】:

  • 有一种方法,但那是一种将数据存储在数据库中的非常糟糕的方法。

标签: mysql concatenation


【解决方案1】:

此查询只会更新不正确的别名列

update mytable set alias = concat(lower(replace(imgtitle,' ','-')),'-',id)
where alias <> concat(lower(replace(imgtitle,' ','-')),'-',id)

但是您是否需要保存别名列?

select * , concat(lower(replace(imgtitle,' ','-')),'-',id) alias
from mytable

【讨论】:

  • 感谢 Fuzzy Tree,它适用于某些领域。除了我查看 imgtitle 列时,还有与号、逗号等。而不是替换所有这些,有没有一种方法可以更改您的查询,只需将“-”和“id”附加到任何数据的末尾已经在别名字段中,当然,那些已经匹配该模式的除外。 ?
  • @decaye 将set 部分更改为set alias = concat(alias,'-',id)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2018-11-14
  • 2012-10-18
  • 2015-12-24
  • 2020-01-25
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多