求助,SQlServer用外连接查询出未匹配的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助,SQlServer用外连接查询出未匹配的数据相关的知识,希望对你有一定的参考价值。
可以用左连接(left join)查询出未匹配的数据。原理是左连接时,将输出左表的所有记录,如果右表没有匹配的记录,则用null替代右表的字段值,这样在where子句里筛选出这些右表字段值为null记录,即可查询出未匹配的数据。请参考下列实例:
查出没有参加课程号为"A01"考试的学生资料
数据结构
student(sid,sname)
score(sid,cid,grade)
SQL语句
select a.* from student a left join(select distinct sid from score where cid='A01') b
on a.sid=b.sid where b.sid is null; 参考技术A 在外连接后面加上,where条件就可以了,请试一试!
关于SqlServer2008小记(查询数据库连接数,强行干掉连接)
查询连接数
select count(*) from master.dbo.sysprocesses
这条语句查出来的是所有连接到本机(或者连接到本服务器)的连接数,并非是某一个库的连接数。
查询连接的库名和对应连接的user
select db_name(dbid) dbName,user_name(uid) [user] from sys.sysprocesses
查询连接到指定库的数量、user
select COUNT(*) from sys.sysprocesses where db_name(dbid) = @dbId -- 查询连接到指定库的数量 @dbId [指定的库名] select distinct user_name(uid) [user] from sys.sysprocesses where db_name(dbid) = @dbId -- 查询连接到指定库的user @dbId [指定的库名]
强行干掉连接
-- 存储过程 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N‘[dbo].[p_killspid]‘) and OBJECTPROPERTY(id, N‘IsProcedure‘) = 1) DROP PROCEDURE [dbo].[p_killspid] go create proc p_killspid @dbname varchar(200) --要关闭进程的数据库名 as declare @programName nvarchar(200), @spid nvarchar(20) declare cDblogin cursor for select cast(spid as varchar(20)) AS spid from master..sysprocesses where dbid=db_id(@dbname) open cDblogin fetch next from cDblogin into @spid while @@fetch_status=0 begin --防止自己终止自己的进程 --否则会报错不能用KILL 来终止您自己的进程。 IF @spid <> @@SPID exec( ‘kill ‘+@spid) fetch next from cDblogin into @spid end close cDblogin deallocate cDblogin go -- 执行 exec p_killspid ‘your database‘
或者
DECLARE @temp NVARCHAR(20) DECLARE myCurse CURSOR FOR SELECT spid FROM sys.sysprocesses WHERE dbid = DB_ID(‘your database‘) OPEN myCurse FETCH NEXT FROM myCurse INTO @temp WHILE @@FETCH_STATUS = 0 BEGIN EXEC (‘kill ‘+@temp) FETCH NEXT FROM myCurse INTO @temp END CLOSE myCurse DEALLOCATE myCurse
以上是关于求助,SQlServer用外连接查询出未匹配的数据的主要内容,如果未能解决你的问题,请参考以下文章
我在连接 SQL server 2008 R2 数据库时出现错误,求助啊
SQLServer Management Studio连接服务器问题,别人客户端可以连,服务器是SQL SERVER2008R2,求助!