update语句 更新内容不正确在线求答案200高分

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:25:15
UPDATE UserList
SET IsCheck = 100
WHERE (IsCheck IN
(SELECT IsCheck
FROM newtable, UserList
WHERE xuehao = UserName AND IsCheck = 1))
为什么xuehao和username的条件不起作用,单独执行查询
SELECT IsCheck
FROM newtable, UserList
WHERE xuehao = UserName AND IsCheck = 1
结果正确,可是嵌套外执行语句后,就把表里所有IsCheck=1的都更新成100了,这是怎么回事啊。是我嵌套的位置写错了么。
1楼的兄弟,你说的不行,结果一样,把所有都更新了。我只想更新xuehao=username的.
2楼的兄弟,加了表名结果一样,我单独查询结构正确,更新才不行。
3楼的兄弟,还是不行啊,结果一样。
4楼的兄弟,学号是int类型。
5楼的兄弟,你写的建外字段是什么意思啊,我两个表关联的就是xuehao和username
6楼的兄弟,没有括号也不行啊,而且执行完自动加了括号

很简单,SELECT IsCheck FROM newtable, UserList WHERE xuehao =UserName AND IsCheck = 1的结果肯定是1,那么
UPDATE UserList SET IsCheck = 100 WHERE IsCheck IN
(SELECT IsCheck FROM newtable, UserList WHERE xuehao =UserName AND IsCheck = 1) 就等于
UPDATE UserList SET IsCheck = 100 WHERE IsCheck in (1) 当然会更新所有的为100了。
归根结底是你逻辑搞错了。
至于正确的语句,要看你的表结构了。
=====================
我想把UserList里的UserName和newtable里的xuehao相等的数据全挑出来
,把其中IsCheck=1的项都换成IsCheck=100。语句该怎么写啊

UPDATE USERLIST A
SET A.ISCHECK = 100
WHERE A.ISCHECK = 1
AND EXISTS (SELECT 1 FROM NEWTABLE B WHERE B.XUEHAO = A.USERNAME)

假设字段USERNAME在NEWTABLE中,XUEHAO在USERLIST中(你没表达清楚)
应该是这样:
UPDATE UserList
SET IsCheck = 100
WHERE (convert(varchar,IsCheck)+'check'+xuehao IN
(SELECT CONVERT(VARCHAR,IsCheck)+'check'+USERNAME
FROM newtable, UserList
WHERE xuehao = UserName AND IsCheck = 1))
--中间加'CHECK'字串是为了防止出现1字打头的XUEHAO