求助,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, NIsProcedure) = 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,求助!

求助:SQLSERVER多条查询语句合并

萌新求助,sql server2008数据库连接失败

sqlserver连接查询的补充

SQL问题求助,查询结果如何清除NULL的空值