sql怎么把一个表的一列替换到对应的另一个表中对应的列?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql怎么把一个表的一列替换到对应的另一个表中对应的列?相关的知识,希望对你有一定的参考价值。
sql怎么把一个表的一列替换到对应的另一个表中对应的列?比如a表中的b列数值对应一个a表中的userid,怎么把b列的数值替换到c表中相同userid对应的一列数值。
实现的方法和详细的操作步骤如下:
1、首先,一个“Student”数据表,这里需要修改数据表中“StudentName”数据表中的各个数据,如下图所示,然后进入下一步。
2、其次,完成上述步骤后,打开数据库查询语句,然后输入查询语句以查询数据表中的数据内容,如下图所示,然后进入下一步。
3、接着,完成上述步骤后,输入如下标记的查询语句,输入后,要求选择所有内容,然后选择执行按钮以执行SQL语句,如下图所示,然后进入下一步。
4、然后,完成上述步骤后,执行完成,在“Student”表的第四行数据(“StudentName”中的“崔”)中,需要将其修改为“亮亮”,如下图所示,然后进入下一步。
5、随后,完成上述步骤后,在数据表上,右键单击鼠标,然后选择“编辑前200行”选项,如下图所示,然后进入下一步。
6、接着,完成上述步骤后,直接选择内部内容以将其修改为“亮亮”,如下图所示,然后进入下一步。
7、然后,完成上述步骤后,修改完成,选择右键单击此内容,然后单击“执行”选项,如下图所示,然后进入下一步。
8、最后,完成上述步骤后,执行完成,以相同的方式使用数据查询语句来查询数据。可以看到数据内容已成功修改,如下图所示。这样,问题就解决了。
参考技术A先明确数据结构如下:
a(userid,val)
b(userid,val)
将a表中userid的val值更新到b表对应userid的val字段里
update b,a set b.val=a.val where a.userid=b.userid;说明:
动作查询在不同的数据库管理系统的SQL语言中,属于SQL“方言”泛滥比较严重的一块区域。上述语句SQL语句在mysql和ACCESS中肯定是OK的,但是其它数据库例如MSSQL等未测试过,如果有问题,我们再做调整。
追问两个数据库之间能用这个吗
追答可以的。请加书库名前缀,例如:
update db2.b,db1.a set db2.b.val=db1.a.val where db1.a.userid=db2.b.userid; 参考技术B 方法1:试试这样的语句能不能行:update table_A set table_A.num=(select table_B.QH where table_B.ID=table_A.ID);
方法2.创建一个视图:
第一、 create view view_temp (select A.num as num,B.qh as qh) from A,B where A.ID=B.ID);
第二、更新view:
update view_temp set num=qh
sql将一个表中的某一列数据更新到另一个表中
代码如下
update a set a.latesprice = b.amount from T_CONDETAILED a,(select b.amount from t_temp b) b where b.conNo=a.conNumber)
报的错误是:
Caused by: java.sql.SQLException: ORA-00933: SQL command not properly ended
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:744)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:206)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:956)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1169)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1695)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1661)
at com.kingdee.bos.sql.shell.KDStatement.execute(KDStatement.java:360)
at com.apusic.jdbc.adapter.StatementHandle.execute(Unknown Source)
at com.kingdee.eas.util.app.DbUtil.execute(DbUtil.java:255)
... 21 more
帮帮忙,我看了好久不知错在哪
update a set a.latesprice = b.amount from T_CONDETAILED a,(select b.amount from t_temp b) b where b.conNo=a.conNumber
方法如图:
SQL语言:
结构化查询语言(英文简称:SQL)是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同 数据库系统,,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。结构化查询语言有五种数据类型: 字符型、文本型、数值型、逻辑型和日期型。
update a
set a.latesprice = (select b.amount
from t_temp b
where b.conNo = a.conNumber)
where a.conNumber in (select b.conNo from t_temp b )
;
--测试数据 临时表
create table temp_x as
select 1 as c_id, 1.1 as c_amount from dual
union all
select 2 as c_id, 1.2 as c_amount from dual
;
create table temp_y as
select 1 as c_id, 1.43 as c_amount from dual
union all
select 2 as c_id, 1.44 as c_amount from dual
;
--测试更新语句
update temp_x a
set a.c_amount = (select b.c_amount
from temp_y b
where b.c_id = a.c_id)
where a.c_id in (select b.c_id from temp_y b)
;
--查询更新结果
select * from temp_x 参考技术B Oracle数据库没有update from 语句,这是SQLServer里面的,就不要想这个了,Oracle可以用另外的方式实现。
我根据你的语句改了下
update T_CONDETAILED a set a.latesprice = (select b.amount from t_temp b where b.conNo=a.conNumber)
你可以试试 参考技术C UPDATE T_CONDETAILED
SET latesprice=t_temp.amount
FROM t_temp
WHERE T_CONDETAILED.conNumber=t_temp.conNo
以上是关于sql怎么把一个表的一列替换到对应的另一个表中对应的列?的主要内容,如果未能解决你的问题,请参考以下文章
sql中有关联的两个表,怎么查出一个表中没有对应到另一个表的数据?