--楼上的,我感觉你理解错了 select * from my_tableselect cast(a as varchar)+','+cast(b as varchar) from my_tableselect * from my_table where '1,2' in (select cast(a as varchar)+','+cast(b as varchar) from my_table) --楼主,我还没看过你说的这种写法.
select * from my_table t where a<>1 and b<>2
我觉得 womangran(我茫然) 理解是对的,只不过它的方法是错的!我理解的是:楼主需要查询出所有的纪录,但是不需要这样的纪录(a=1,b=2) 但是楼主反过来了,你这样写法,只要存在(a=1,b=2)的纪录,永远都是空的,因为not in 不成功,另外你的(1,2) not in (select a,b from my_table)肯定是错的,不知道你从哪里学来的语法: 我用我的表资料---a测试: select * from a /* a_nam a_add ---------- ---------- 1 aa 1 bb 2 cc 2 vv 2 kk(5 row(s) affected) */ select * from a where (a_nam +',' + a_add) not in ('1,aa') /* a_nam a_add ---------- ---------- 1 bb 2 cc 2 vv 2 kk(4 row(s) affected)*/ 改为下面2个也可以: select a_nam + a_add from a where (a_nam +',' + a_add) <> ('1,aa')select * from a where a_nam <> '1' and a_add <> '2' /* a_nam a_add ---------- ---------- 2 cc 2 vv 2 kk(3 row(s) affected) */ 答案都是a_nam = 1,b_nam=aa的纪录不出来FYI
select *
from my_tableselect cast(a as varchar)+','+cast(b as varchar) from my_tableselect *
from my_table
where '1,2' in
(select cast(a as varchar)+','+cast(b as varchar) from my_table)
--楼主,我还没看过你说的这种写法.
from my_table t
where a<>1 and b<>2
但是楼主反过来了,你这样写法,只要存在(a=1,b=2)的纪录,永远都是空的,因为not in 不成功,另外你的(1,2) not in (select a,b from my_table)肯定是错的,不知道你从哪里学来的语法:
我用我的表资料---a测试:
select * from a
/*
a_nam a_add
---------- ----------
1 aa
1 bb
2 cc
2 vv
2 kk(5 row(s) affected)
*/
select * from a
where (a_nam +',' + a_add) not in ('1,aa')
/*
a_nam a_add
---------- ----------
1 bb
2 cc
2 vv
2 kk(4 row(s) affected)*/
改为下面2个也可以:
select a_nam + a_add from a
where (a_nam +',' + a_add) <> ('1,aa')select * from a
where a_nam <> '1' and a_add <> '2'
/*
a_nam a_add
---------- ----------
2 cc
2 vv
2 kk(3 row(s) affected)
*/
答案都是a_nam = 1,b_nam=aa的纪录不出来FYI