这句SQL语句执行返回。。。子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后。 请问有什
UPDATEusermessageSETmessage=(SELECTmessageFROMusermessageWHEREuser='admin'),type=3WHE...
UPDATE usermessage SET message =(SELECT message FROM usermessage WHERE user ='admin'),type = 3 WHERE ID=30 AND type = 4
请问这句有什么问题?老是说子查询返回值多于一个。。。
表usermessage的各列如下
ID user message type date 展开
请问这句有什么问题?老是说子查询返回值多于一个。。。
表usermessage的各列如下
ID user message type date 展开
4个回答
展开全部
说明usermessage里面有几行user都是admin,所以不能让message=一个结果集
加个 top 1 就解决了
UPDATE usermessage SET message =(SELECT top 1 message FROM usermessage WHERE user ='admin'),type = 3 WHERE ID=30 AND type = 4
加个 top 1 就解决了
UPDATE usermessage SET message =(SELECT top 1 message FROM usermessage WHERE user ='admin'),type = 3 WHERE ID=30 AND type = 4
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT message FROM usermessage WHERE user ='admin'
你单独执行一下这条语句,看下结果,如果记录多于一条的话就会报这个错的哈。
你单独执行一下这条语句,看下结果,如果记录多于一条的话就会报这个错的哈。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT message FROM usermessage WHERE user ='admin'这句话是不是返回了很多值?更新语句必须保证子查询只返回一个值,否则就报错。
追问
执行了一下的确是返回了2行值。。。但是2行值都是一样的,如果是一样的
SELECT message FROM usermessage WHERE user ='admin'的返回值都是“嗯我知道了”
那么这句
UPDATE usermessage SET message =(SELECT message FROM usermessage WHERE user ='admin'),type = 3 WHERE ID=30 AND type = 4
应该怎么改呢?
追答
如果你确保返回的两行都是一样的,不妨在子查询这里加个max。
UPDATE usermessage SET message =(SELECT max(message) FROM usermessage WHERE user ='admin'),type = 3 WHERE ID=30 AND type = 4
这样肯定只有1行返回
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
意思是SELECT message FROM usermessage WHERE user ='admin' 这个查询出来不止一条,你单独执行下这条语句,如果是大于一条UPDATE是会报错的
追问
执行了一下的确是返回了2行值。。。但是2行值都是一样的,如果是一样的
SELECT message FROM usermessage WHERE user ='admin'的返回值都是“嗯我知道了”
那么这句
UPDATE usermessage SET message =(SELECT message FROM usermessage WHERE user ='admin'),type = 3 WHERE ID=30 AND type = 4
应该怎么改呢?
追答
UPDATE usermessage SET message =(SELECT message FROM usermessage WHERE user ='admin' AND ROWNUM =1),type = 3 WHERE ID=30 AND type = 4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询