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
*/
要求如下:
=================================================
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
*/
相关文章推荐
- Code First Entity Framework动态组合Lambda表达式作为数据筛选条件,代替拼接SQL语句
- SQL点滴4—筛选数据列的类型,字段大小,是否可为空,是否是主键,约束等等信息
- 【MS SQL Server】SQL Server datetime数据类型设计与优化误区
- MS-SQL 多行数据合并为一行
- MS sql server和mysql中update多条数据的例子
- sqlserver2008设置表、存储过程等对象筛选出现“无法为该请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc) ”以及智能提示失效问题
- MS SQL Server数据库修复利器—D-Recovery For MS SQL Server数据恢复软件
- 将mysql数据导入到MS Sql Server中
- MS_sql数据手动备份
- sql语句:如何筛选重复数据
- 在MS SQLSERVER中如何最快的速度清空所有用户表的数据
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
- MS-SQL T-SQL语句查询最近一周的数据
- MS SQL Server树型结构数据显示的SQL语句(纯SQL语句,不用函数)
- vb数据筛选+多重条件+模糊搜索SQL语句笔记
- 分组筛选数据,某个数据字段比如说患者就诊超过一次的,身份证号会重复出现的,sql语句,备忘用的
- MS sql server和MYsql中update多条数据的例子
- MS SQL SERVER中备份所有数据库
- 《MS SQL Server 2000管理员手册》系列——10. 建立数据库数据表
- Ms SQL Server 游标嵌套 初始化数据