MySQL使用相同的表值进行更新

问题描述

| 我有一个名为\“ users \”的MysqL表,该表具有\“ firstname \”和\“ surname \”列。表中有一千行左右。 现在,我添加了另一个名为\“ search \”的列,我想用姓氏和姓氏的值(以空格分隔)填充它。例如,如果firstname = Bob和firstname = smith,我想用\“ Bob Smith \”填充\“ search \”。 任何人都可以建议选择这些值并将其插入新列的更新语句吗? 最好的问候,本。     

解决方法

您可以简单地使用...
UPDATE users SET search=TRIM(CONCAT(firstname,\' \',surname));
作为一种解释,“ 1”仅连接(合并)提供的字段/值,而“ 2”将删除任何前导或尾随空格,因此可以确保如果没有名字/姓氏或两者都丢失,则不会出现任何问题。有关这些函数的更多信息,请参见MySQL String Functions手册页。 但是,我很想将新列称为“名称”(或者实际上是“全名”)而不是“搜索”,因为这充其量是一个令人误解的字段名称。     ,
update users
set search = CONCAT(firstname,surname)
该脚本将对其进行更新。 我不确定MySql,但是Sql Server允许您将字段设置为计算列。您可以将计算指定为\“
ISNULL(FirstName,\' \') + \' \' + ISNULL(Surname,\' \')
\”并将其设置为持久,这样就不会每次都进行计算。在这种情况下,您不需要更新脚本     ,
update `users` set `search` = CONCAT(`firstname`,`surname`);
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...