日期:2014-05-17  浏览次数:20393 次

求一条SQL语句,本人新手
根据ID查出某个字段的值,如果该值为1就修改为0,值为0就修改为1.
能不能用一条SQL语句实现?

------解决方案--------------------
update tb set col=1-col where id=@id
------解决方案--------------------
SQL code

--如果数据中除了1和0以外有其他数字的话会有影响
DECLARE @T TABLE(ID INT,[COL] INT)
INSERT @T
SELECT 1,1 UNION ALL
SELECT 2,1 UNION ALL
SELECT 3,0 UNION ALL
SELECT 4,0 UNION ALL
SELECT 5,2 

UPDATE @T SET COL=COL^1 FROM @T 

SELECT * FROM @T
/*
ID          COL
----------- -----------
1           0
2           0
3           1
4           1
5           3
*/

--如果数据中除了1和0以外有其他数字的话会有影响
DECLARE @T1 TABLE(ID INT,[COL] INT)
INSERT @T1
SELECT 1,1 UNION ALL
SELECT 2,1 UNION ALL
SELECT 3,0 UNION ALL
SELECT 4,0 UNION ALL
SELECT 5,2 

UPDATE @T1 SET COL=1-COL FROM @T1 --WHERE ID=1

SELECT * FROM @T1
/*
ID          COL
----------- -----------
1           0
2           0
3           1
4           1
5           -1
*/

--如果数据中除了1和0以外有其他数字的话没有影响
DECLARE @T2 TABLE(ID INT,[COL] INT)
INSERT @T2
SELECT 1,1 UNION ALL
SELECT 2,1 UNION ALL
SELECT 3,0 UNION ALL
SELECT 4,0 UNION ALL
SELECT 5,2 

UPDATE @T2 SET COL=CASE COL WHEN 1 THEN 0 WHEN 0 THEN 1 ELSE COL END FROM @T2 --WHERE ID=1

SELECT * FROM @T2
/*
ID          COL
----------- -----------
1           0
2           0
3           1
4           1
5           2
*/