sql 2008 查询排除 某一列的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 2008 查询排除 某一列的数据相关的知识,希望对你有一定的参考价值。

因为工作需要,需要从其他数据库抓取数据,但是有一个字段部需要抓,由於整个表中的字段比较多,按照一个个查找比较麻烦,先需要排除特定的一个或者2个字段,查询出其他的数据
例如:
有表tab_duty
ID name duty_num note
1 123 001 321
2 234 002 432

现在需要查询出除了note的所有数据
ID name duty_num
1 123 001
2 234 002
除了用select id, name ,duty_num from tab_duty
还有其他反方式没?
因为要从oracle抓数据,但是他们有一种NUMBER(3,0)类型的
sql没有,所以用sql查这个会报错,就考虑排除这个字段

非常抱歉.
单从一条sql语句而言,不管是什么数据库:access,db2,oracle,mssql,mysql等等都无法实现你想要的.
包括一些sql的方言比如HQL,也无法做到.
你只有老老实实的写上列名.
如果你真的想一劳永逸的话,建议你 使用存储过程,结合动态语句和 对应数据库的 系统表,来 处理.
参考技术A 写个视图,每次查的时候直接去查视图 参考技术B 没有了,这个有啥不好?

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年得到国际标准组织的支持下成为国际标准。结构化查询语言有五种数据类型: 字符型、文本型、数值型、逻辑型和日期型。

参考技术A --正确SQL
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 2008 查询排除 某一列的数据的主要内容,如果未能解决你的问题,请参考以下文章

sql语句查询一个表中某一列的相同数据

sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果

EXCEL中SQL Server Where 使用某一列的数据作为 查询条件的命令?

在线等。。。。SQL中如何将一个表中的某一列的数据替换到另一个表中的某一列里。

sql查询中有一列中有NULL的数据,如何判断不为空的时候才进行操作?

EXCEL 如何查询一个数据是不是在某一列中