您的位置:首页 > 数据库

SQL研究(MS-SQL)之一:筛选数据

2008-10-23 17:09 211 查看
摘抄自论坛资源:http://topic.csdn.net/u/20081023/13/6d3b2fd6-39fa-4efe-9fd2-d1ea11b08091.html

要求如下:

=================================================

Table1
字段1 字段2
1001 TRUE
1003 FALSE
1006 FALSE
1002 TRUE
1002 FALSE
1004 FALSE
Table2
字段1 字段2
1003 FALSE
1006 FALSE
1004 FALSE
也就是从表1中筛选出字段2从来没有为TRUE的记录

=================================================

实现:

方法1:(临时表,生成于tempdb下,查询分析器下可以查看到)

--> 生成测试数据: #T

IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T

CREATE TABLE #T (字段1 INT,字段2 VARCHAR(5))

INSERT INTO #T

SELECT 1001,'TRUE' UNION ALL

SELECT 1003,'FALSE' UNION ALL

SELECT 1006,'FALSE' UNION ALL

SELECT 1002,'TRUE' UNION ALL

SELECT 1002,'FALSE' UNION ALL

SELECT 1004,'FALSE'

--SQL查询如下:

SELECT *

FROM #T AS t

WHERE NOT EXISTS

(

SELECT *

FROM #T

WHERE 字段1=t.字段1

AND 字段2='True'

)

/*

字段1 字段2

----------- -----

1003 FALSE

1006 FALSE

1004 FALSE

(3 行受影响)

*/

方法2:

declare @tb table(f1 int, f2 varchar(5))

insert @tb

SELECT 1001, 'TRUE' UNION ALL

SELECT 1003, 'FALSE' UNION ALL

SELECT 1006, 'FALSE' UNION ALL

SELECT 1002, 'TRUE' UNION ALL

SELECT 1002, 'FALSE' UNION ALL

SELECT 1004, 'FALSE'

select * from @tb as a where not exists(select 1 from @tb where f1=a.f1 and f2='TRUE')

/*

f1 f2

----------- -----

1003 FALSE

1006 FALSE

1004 FALSE

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: