首页新闻找找看学习计划

sql有什么问题么?

0
悬赏园豆:50 [已解决问题] 解决于 2018-05-30 11:58

update a set

a.field1=b.field1,
 a.field2=b.field2,

 

a.fieldn=b.fieldn
from TB t1 inner join TB2 t2
on t1.id=t2.id 
where t2.id='100001'
有一个多字段更新。也就是将T2的值反写到T1,通过更新操作做的。为什么一直报
format sql error. target database is 'MS SQL Server' detail message is :
update's tableSource is null
这个有大佬能解释下吗?
问题补充:

select * from T1 t1 inner join T2 t2 on t1.id=t2.id 这个是多条记录 后面加个具体从控件中取得字段 加上where b.id='10000' 后该查询语句确定只有一条记录

update a set

a.field1=b.field1,
 a.field2=b.field2,

 

a.fieldn=b.fieldn
from TB a inner join TB2 b
on a.id=b.id 
where b.id='100001'
有一个多字段更新。也就是将T2的值反写到T1,通过更新操作做的。为什么一直报
format sql error. target database is 'MS SQL Server' detail message is :
update's tableSource is null
这个有大佬能解释下吗?
 
主要实现T2 b中的某条记录,写到T1 a中 想通过更新的方式的来完成。根据控件中抓取到的id来完成覆盖。
 
good_idea的主页 good_idea | 初学一级 | 园豆:74
提问于:2018-05-28 15:53
< >
分享
最佳答案
0

你的b从哪里来的,为什么你update a表 from的TB表和TB2表这俩表和a的关系是什么

收获园豆:40
_legends | 菜鸟二级 |园豆:499 | 2018-05-28 15:57

b=t2不好意思。可以看成t2.field  笔误

 

good_idea | 园豆:74 (初学一级) | 2018-05-28 15:58

@good_idea: 那么a t1 t2表之间的关系呢,a是t1吗

_legends | 园豆:499 (菜鸟二级) | 2018-05-28 16:00

@_legends: 是的,习惯性设啊a,b了。具体在后面问题补充,已付上。刚开始也以为是更新了多条语句,后面排除了很多可能,id是不为空的,表数据不为空的.....等等。

good_idea | 园豆:74 (初学一级) | 2018-05-28 16:03

@good_idea: 

UPDATE TB a
INNER JOIN TB2 b ON a.id = b.id
SET a.field1 = b.field1,
a.field2 = b.field2,
a.fieldn = b.fieldn
WHERE
b.id = '100001'

_legends | 园豆:499 (菜鸟二级) | 2018-05-28 16:05

@_legends:额,还是报一样的错。

good_idea | 园豆:74 (初学一级) | 2018-05-28 16:11

@good_idea: 看下你是不是数据库选错了,

select from TB a inner join TB2 b
on a.id=b.id 
where b.id='100001' 查一下
_legends | 园豆:499 (菜鸟二级) | 2018-05-28 16:15

@_legends: 

format sql error. target database is 'MS SQL Server' detail message is :
update's tableSource is null

和我的sql报错一样的,sql格式报错,表资源为空。两个表a,b都是有数据的。

select * from T1 a inner join T2 b on a.id=b.id 这个查询有多条记录。后面加where 条件 b.id='100001'后有一条记录。表实体数据库中也有查询得到。

good_idea | 园豆:74 (初学一级) | 2018-05-28 16:18

@good_idea: 看你set的字段都对不对,在TB,TB2表里面有没有

_legends | 园豆:499 (菜鸟二级) | 2018-05-28 16:29

@_legends: 确定都有,并且对应的上,在sql server数据库中执行并且无误,但把sql放C#代码中执行就报了这个问题。可以确定数据库连接代码,执行代码等均没有问题。

good_idea | 园豆:74 (初学一级) | 2018-05-28 16:32

@good_idea: 既然在数据库中sql没有错能执行那就肯定是C#的错了,看看配置的数据库源对不对,我是做java的c#没学过

_legends | 园豆:499 (菜鸟二级) | 2018-05-28 16:33

@_legends: 这个也不全对的,数据库可以执行,代码中不能执行的例子是有的。比如你弄个子查询,并以该视图为子表的查询,由于没有表实体的报错。数据库的配置是测试过的,也就那么几行代码,这个是可以保证的,update的执行也可以保证的。并且是直接从以往的可以正确执行的代码里面扣的。几乎不存在错误的可能性。

good_idea | 园豆:74 (初学一级) | 2018-05-28 16:37
其他回答(2)
0

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

收获园豆:10
让我发会呆 | 园豆:2629 (老鸟四级) | 2018-05-28 15:57
0

最后把这个sql放到存储过程里面去了,然后代码调用存储过程,啥事没有。在论坛问了下其他人原因,大佬说,这是sql的转义问题。囧了

good_idea | 园豆:74 (初学一级) | 2018-05-30 11:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册