收录日期:2020/05/31 08:27:21 时间:2016/06/06 10:24:37 标签:数据库及相关技术
能不能用SQL实现替换某一字段满足某一条件的记录
如把TABLE1字段A中所有为-999的数据替换成0,如何写,请大家写出代码,谢谢!
基本的SQL语句.

AnsiString sqlstr="update Table1 set colmn='0' where colmn='-999'"
ADOQuery1->Close();
ADOQuery1->SQL->Text=sqlstr;
ADOQuery1->ExecSQL();
谢谢!
如果是针对ADOQuery的查询结果进行数据替换操作,为什么如下代码不行?
提示信息为:字段“数量”不可更新!

String sql="update (select t1.datetime as 时间,t1.a as 单价,t2.c as 数量 from t1 left  join t2 on t1.datetime=t2.datetime) set 数量=0 where 数量=-999";

ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->Open();
在SQL中使用Update语句是更新实际表的字段,而不是你所谓通过select查出来的结果集.所以你上面的SQL是错误的.
请注意update的语法!
上面的语句应该修改为
update t2 set t2.c='0' from t1 left  join t2 on t1.datetime=t2.datetime where t2.c='-999'
结贴吧
这样一来,我原来的t2这个表不是被改动了,我只是想对查询结果进行修改,而不改变原表啊!
另外,想问一下,如何对查询结果进行修改?
看来楼主对SQL了解的太少了.
把SQL语句改成这样
select t1.datetime as 时间,t1.a as 单价,
case
when t2.c='-999' then '0'
else 
 t2.c
end as 数量  
from t1 left  join t2 on t1.datetime=t2.datetime
是啊,我用SQL不多,所以一知半解,还请大家多帮忙,先谢了,我去试试看。
用case..when...then...
呵呵,我用lurel的代码试了试,提示:末指定的错误!
这下更复杂了,连错哪个地方都不知道了。
这是我的代码,会错在哪里呢,请各位帮看看,谢谢!
String sql="select t1.datetime as 日期,t1.a as 单价,";
 sql+="case when t2.c=-999 then 0";
 sql+=" else t2.c end as 数量";
 sql+=" from t1 left join t2 on t1.datetime=t2.datetime";

 ADOQuery3->SQL->Clear();
 ADOQuery3->SQL->Add(sql);
 ADOQuery3->Open() ;
你首先在数据库里面执行一下,看有没有什么问题,如果能返回结果,说明SQL语句没问题.
然后看一下ADOQuery3->SQL->Text值,核对一下,看是否和数据库的SQL语句一致.自己调试一下就可以搞定了.
ADOQuery1->Close();
ADOQuery1->SQL->Text=sqlstr;
ShowMessage(ADOQuery1->SQL->Text);
ADOQuery1->ExecSQL();
我的是ACCESS数据库,在ACCESS中测试如下SQL语句:
select t1.datetime as 日期,t1.a as 单价 ,case when t2.c=-999 then 0 else t2.c end as 数量 from t1 left t2 on t1.datetime=t2.datetime

提示错误信息为:操作符丢失在查询表达式“case when t2.c=-999 then 0 else t2.c end ”中。
我看了看没有发现哪错, 与lurel(城市陌生人) 的一模一样啊。

把 else t2.c 去掉错误仍然一样,但把“case ......end”部分去掉后则能正常查询,我怀疑
“case .....end”部分有错,但不知怎么改(我的t2.c为数字型字段,若与lurel(城市陌生人)一样加上‘’也不行)。
我的是ACCESS数据库,在ACCESS中测试如下SQL语句:
select t1.datetime as 日期,t1.a as 单价 ,case when t2.c=-999 then 0 else t2.c end as 数量 from t1 left join t2 on t1.datetime=t2.datetime

提示错误信息为:操作符丢失在查询表达式“case when t2.c=-999 then 0 else t2.c end ”中。
我看了看没有发现哪错, 与lurel(城市陌生人) 的一模一样啊。

把 else t2.c 去掉错误仍然一样,但把“case ......end”部分去掉后则能正常查询,我怀疑
“case .....end”部分有错,但不知怎么改(我的t2.c为数字型字段,若与lurel(城市陌生人)一样加上‘’也不行)。

access不支持这么复杂的语法,只有SQL Server和Oracle9i以上才支持,建议中途创建一个临时表,然后更新临时表进行查询吧.
我用了Microsoft.Jet.OLEDB.4.0引擎,为什么也不行啊
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test\test.mdb;Persist Security Info=False
Update p set t2.c=0
From t2  left  join t2 on t1.datetime=t2.datetime and t2.c=999
改正一下:
Update T2 set t2.c=0
From t2  left  join t1 on t1.datetime=t2.datetime and t2.c=999
我想用 select ........into #abc 来建临时表为什么不行,是不是也是ACCESS的问题?
这种语法有错吗?为什么执行时错
creat table aaa as selct * t1
这种语法有错吗?为什么执行时错
creat table aaa as selct * from t1
access 不支持比较复杂的语法,不要在SQL语句较劲了.
老老实实的create一个表,然后把select t1.datetime as 时间,t1.a as 单价,t2.c as 数量 from t1 left  join t2 on t1.datetime=t2.datetime插入这个表中,然后update这个表,每次调用前先删除这个表就可以了.

mysql如何变更数据库实例名 Goldshell Clipyard 1.33 合并成一个swf后怎么 访问其中的一个呢? struts1中问题 如何将一个表的数据插入到另一个表。 ar打包的问题,请好心人赐教 listView导入Excel遇到问题了 跟踪订单-的逻辑?类似返现网的那种 网店开张,散分,兄弟们给女朋友送礼物可打折 C#中多线程导致对象为空的问题 VC使用ADO从数据库中取出DATETIME类型,时间错误 窗口的消息循环如何拦截commond消息 C#服务程序FolderBrowserDialog看不见目录树 关于jndi连接数据库 如何带进度条备份还原sql数据库 菜鸟提问AO开发的license问题 cwinthread成员变量m_bAutoDelete的疑惑 C++ Linux高手进来一下, blog被封应如何解封? 【解决并回复】 上海有单身的交友聚会吗 jquery中的val,text,html有什么区别? 请教飞雪大哥 tslib数据结构的问题 查询语句 菜鸟问题急求解答! js导航加点事件或超链接 各位都胖了吗? ioctlsocket 函数的 argp 有什么用呀? 我想请问如何在.NET原代码中找到数据库连接的那部分代码 我是一名男程序员,首次来到CSDN sprice ioc资源文件