你好怎么吵架才能赢样才能找到我女朋友我们吵架了她走了手机微信都把我拉黑了已经走了四五天了!

子查询返回的值不止一个。当子查询跟随在 =、!=、&、&=、&、&= 之后,或子查询用作表达式时,这种情况是不允许的。
10weilong]
子查询返回的值不止一个。当子查询跟随在 =、!=、&、&=、&、&= 之后,或子查询用作表达式时,这种情况是不允许的。
10weilong]
发布时间: 12:16:42
编辑:www.fx114.net
本篇文章主要介绍了"子查询返回的值不止一个。当子查询跟随在 =、!=、&、&=、&、&= 之后,或子查询用作表达式时,这种情况是不允许的。
10weilong]",主要涉及到子查询返回的值不止一个。当子查询跟随在 =、!=、&、&=、&、&= 之后,或子查询用作表达式时,这种情况是不允许的。
10weilong]方面的内容,对于子查询返回的值不止一个。当子查询跟随在 =、!=、&、&=、&、&= 之后,或子查询用作表达式时,这种情况是不允许的。
10weilong]感兴趣的同学可以参考一下。
create&view&view_select_assertremove
SELECT&&Remove_1.remid,&dbo.Stock.stAsId,&dbo.Stock.asName,&dbo.Sort.soName,&Remove_1.remTime,&dbo.Stock.asStandard,dbo.Stock.asComponey,&Remove_1.remCount,&&
&&&&&&&&&&&&&&&&&&&&&&dbo.Stock.stPrice,&dbo.Stock.stPrice&*&Remove_1.remCount&AS&remmoney,&Machine_1.machName,&Address_1.adrName,
&&&&&&&&&&&&&&&&&&&&&&&&&&(SELECT&&&&&dbo.Machine.machName
&&&&&&&&&&&&&&&&&&&&&&&&&&&&FROM&&&&&&&&&&dbo.Machine&INNER&JOIN
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dbo.Address&AS&Address_2&ON&dbo.Machine.machineId&=&Address_2.adrMachineId&INNER&JOIN
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dbo.Remove&AS&Remove_2&ON&Address_2.adrId&=&Remove_2.remIntoAdId)&AS&remintomachname,
&&&&&&&&&&&&&&&&&&&&&&&&&&(SELECT&&&&&dbo.Address.adrName
&&&&&&&&&&&&&&&&&&&&&&&&&&&&FROM&&&&&&&&&&dbo.Address&INNER&JOIN
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dbo.Remove&ON&dbo.Address.adrId&=&dbo.Remove.remIntoAdId)&AS&remintoadrname,&Remove_1.remRemark
FROM&&&&&&&&&dbo.Remove&AS&Remove_1&INNER&JOIN
&&&&&&&&&&&&&&&&&&&&&&dbo.Asserts&ON&Remove_1.remAsId&=&dbo.Asserts.id&INNER&JOIN
&&&&&&&&&&&&&&&&&&&&&&dbo.Stock&ON&dbo.Asserts.asstockId&=&dbo.Stock.stId&INNER&JOIN
&&&&&&&&&&&&&&&&&&&&&&dbo.Address&AS&Address_1&INNER&JOIN
&&&&&&&&&&&&&&&&&&&&&&dbo.Machine&AS&Machine_1&ON&Address_1.adrMachineId&=&Machine_1.machineId&ON&dbo.Stock.stAddressId&=&Address_1.adrId&INNER&JOIN
&&&&&&&&&&&&&&&&&&&&&&dbo.Sort&ON&dbo.Stock.stSoId&=&dbo.Sort.soId&
select&*&from&view_select_assertremove
用这个视图查询数据的时候出现了“子查询返回的值不止一个。当子查询跟随在&=、!=、&、&=、&、&=&之后,或子查询用作表达式时,这种情况是不允许的。” 这个错误。数据库没改数据前查的出. 请大家看看是怎么回事!就是你的子查询返回了多个值..
所以是一对多的..可以尝试使用TOP&1create&view&view_select_assertremove&
SELECT&&Remove_1.remid,&dbo.Stock.stAsId,&dbo.Stock.asName,&dbo.Sort.soName,&Remove_1.remTime,&dbo.Stock.asStandard,dbo.Stock.asComponey,&Remove_1.remCount,&&
&&&&&&&&&&&&&&&&&&&&&&dbo.Stock.stPrice,&dbo.Stock.stPrice&*&Remove_1.remCount&AS&remmoney,&Machine_1.machName,&Address_1.adrName,&
&&&&&&&&&&&&&&&&&&&&&&&&&&(SELECT&&top&1&&dbo.Machine.machName&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&FROM&&&&&&&&&&dbo.Machine&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dbo.Address&AS&Address_2&ON&dbo.Machine.machineId&=&Address_2.adrMachineId&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dbo.Remove&AS&Remove_2&ON&Address_2.adrId&=&Remove_2.remIntoAdId)&AS&remintomachname,&
&&&&&&&&&&&&&&&&&&&&&&&&&&(SELECT&&top&1&&&dbo.Address.adrName&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&FROM&&&&&&&&&&dbo.Address&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dbo.Remove&ON&dbo.Address.adrId&=&dbo.Remove.remIntoAdId)&AS&remintoadrname,&Remove_1.remRemark&
FROM&&&&&&&&dbo.Remove&AS&Remove_1&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Asserts&ON&Remove_1.remAsId&=&dbo.Asserts.id&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Stock&ON&dbo.Asserts.asstockId&=&dbo.Stock.stId&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Address&AS&Address_1&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Machine&AS&Machine_1&ON&Address_1.adrMachineId&=&Machine_1.machineId&ON&dbo.Stock.stAddressId&=&Address_1.adrId&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Sort&ON&dbo.Stock.stSoId&=&dbo.Sort.soId&
go&create&view&view_select_assertremove&
SELECT&&Remove_1.remid,&dbo.Stock.stAsId,&dbo.Stock.asName,&dbo.Sort.soName,&Remove_1.remTime,&dbo.Stock.asStandard,dbo.Stock.asComponey,&Remove_1.remCount,&&
&&&&&&&&&&&&&&&&&&&&&&dbo.Stock.stPrice,&dbo.Stock.stPrice&*&Remove_1.remCount&AS&remmoney,&Machine_1.machName,&Address_1.adrName,&
&&&&&&&&&&&&&&&&&&&&&&&&&&(SELECT&&top&1&&dbo.Machine.machName&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&FROM&&&&&&&&&&dbo.Machine&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dbo.Address&AS&Address_2&ON&dbo.Machine.machineId&=&Address_2.adrMachineId&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dbo.Remove&AS&Remove_2&ON&Address_2.adrId&=&Remove_2.remIntoAdId)&AS&remintomachname,&
&&&&&&&&&&&&&&&&&&&&&&&&&&(SELECT&&top&1&&&dbo.Address.adrName&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&FROM&&&&&&&&&&dbo.Address&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dbo.Remove&ON&dbo.Address.adrId&=&dbo.Remove.remIntoAdId)&AS&remintoadrname,&Remove_1.remRemark&
FROM&&&&&&&&dbo.Remove&AS&Remove_1&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Asserts&ON&Remove_1.remAsId&=&dbo.Asserts.id&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Stock&ON&dbo.Asserts.asstockId&=&dbo.Stock.stId&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Address&AS&Address_1&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Machine&AS&Machine_1&ON&Address_1.adrMachineId&=&Machine_1.machineId&ON&dbo.Stock.stAddressId&=&Address_1.adrId&INNER&JOIN&
&&&&&&&&&&&&&&&&&&&&&&dbo.Sort&ON&dbo.Stock.stSoId&=&dbo.Sort.soId&
go&把你這兩個子查詢改成左連接。
(SELECT&dbo.Machine.machName&
FROM&dbo.Machine&INNER&JOIN&
dbo.Address&AS&Address_2&ON&dbo.Machine.machineId&=&Address_2.adrMachineId&INNER&JOIN&
dbo.Remove&AS&Remove_2&ON&Address_2.adrId&=&Remove_2.remIntoAdId)&AS&remintomachname,
(SELECT&dbo.Address.adrName&
FROM&dbo.Address&INNER&JOIN&
dbo.Remove&ON&dbo.Address.adrId&=&dbo.Remove.remIntoAdId)&AS&remintoadrname&&&要怎么改呢?发错了,不好意思,刚没看到你们的答案!&&还有个问题,数据库里面的数据不同它显示的也不同!
   有一个数据库显示的数据是错误的!(machName,adrName,remintoadrname,remintomachname这四列的值都相同!) 帮忙看看!引用&7&楼&weilong&的回复:还有个问题,数据库里面的数据不同它显示的也不同!
有一个数据库显示的数据是错误的!(machName,adrName,remintoadrname,remintomachname这四列的值都相同!) 帮忙看看!
注意子查詢的條件表名用別名字查詢條件引用外部表&&&用了别名了。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:利用带关联子查询Update语句更新数据的方法
投稿:mdxy-dxy
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了利用带关联子查询Update语句更新数据的方法,需要的朋友可以参考下
Update是T-sql中再简单不过的语句了,update table set column=expression [where condition],我们都会用到。但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果。
假定有表Table1(a,b,c)和Table2(a,c),现在Table1中有些记录字段c为null,要根据字段a在Table2中查找,取出字段a相等的字段c的值来更新Table1。一种常规的思路,通过游标遍历Table1中字段c为null的所有记录,在循环体内查找Table2并进行更新,即用游标Cursor的形式。测试sql语句如下:
--1.创建测试表
create TABLE Table1
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
) ON [PRIMARY]
create TABLE Table2
a varchar(10),
c varchar(10),
CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
) ON [PRIMARY]
--2.创建测试数据
Insert into Table1 values('赵','asds',null)
Insert into Table1 values('钱','asds','100')
Insert into Table1 values('孙','asds','80')
Insert into Table1 values('李','asds',null)
Insert into Table2 values('赵','90')
Insert into Table2 values('钱','100')
Insert into Table2 values('孙','80')
Insert into Table2 values('李','95')
select * from Table1
--3.通过游标方式更新
declare @name varchar(10)
declare @score varchar(10)
declare mycursor cursor for select a from Table1 where c is null
open mycursor
fetch next from mycursor into @name
while(@@fetch_status = 0)
select @score=c from Table2 where a=@name
update Table1 set c = @score where a = @name
fetch next from mycursor into @name
close mycursor
deallocate mycursor
--4.显示更新后的结果
select * from Table1
--5.删除测试表
drop TABLE Table1
drop TABLE Table2
虽然用游标可以实现,但代码看起来很复杂,其实用Update根据子关联来更新只要一条语句就可以搞定了,测试代码如下:
--1.创建测试表
create TABLE Table1
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
) ON [PRIMARY]
create TABLE Table2
a varchar(10),
c varchar(10),
CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
) ON [PRIMARY]
--2.创建测试数据
Insert into Table1 values('赵','asds',null)
Insert into Table1 values('钱','asds','100')
Insert into Table1 values('孙','asds','80')
Insert into Table1 values('李','asds',null)
Insert into Table2 values('赵','90')
Insert into Table2 values('钱','100')
Insert into Table2 values('孙','80')
Insert into Table2 values('李','95')
select * from Table1
--3.通过Update方式更新
Update Table1 set c = (select c from Table2 where a = Table1.a) where c is null
--4.显示更新后的结果
select * from Table1
--5.删除测试表
drop TABLE Table1
drop TABLE Table2
参考资料:,
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具posts - 81,&
comments - 80,&
trackbacks - 13
&&&& 在项目中写了两个表的触发器分别是cd表。
&& 触发本触发器的条件是:插入的语句的projectid(企业编号)&0并且cdxm(长贷项目)=&借款金额&时,同时在本表中插入一条projectid和marketid、cdje(长贷金额)相同,marketyear=插入的marketyear(发生年份)+插入的zq(账期),长贷项目为&应还金额&的数据记录。
写法如下:修改本错误主要看cd表。
if&(select&projectid&from&inserted&)&0beginif(select&cdxm&from&inserted)='借款金额'begininsert&into&cd&&select&projectid,marketid,convert(int,marketyear)+convert(int,zq),&'应还金额',cdje,0&from&inserted&end
&&&&& 根据sql跟踪,错误提示为第一行和第三行,应修改为:
Codeif&exists(select&projectid&from&inserted&&where&projectid&0)begininsert&into&cd&&select&projectid,marketid,convert(int,marketyear)+convert(int,zq),&'应还金额',cdje,0&from&inserted&where&&cdxm='借款金额'&and&projectid&0end
使用exists关键字,判断是否包含结果集,这样就防止了第一行返回多条记录,同时将cdxm放入到内部限制,而不是用if,返回多结果集了。
问题是解决了,令我奇怪的是,我还有一个表,写法如一个段代码,内容基本类型,就不报错,很奇怪呀!sql也有表里不一的情况呀!
阅读(...) 评论()

我要回帖

更多关于 怎么才能找到工作 的文章

 

随机推荐