Sql 选择查询排序问题

Sql 选择查询排序问题,sql,select,Sql,Select,我有两个表,一个主表和一个事务表。我想把这些东西分类 基于以下条件的主表查询结果:如果已输入学号和学名 存在于事务表中,或者如果记录(stud no,studname)已经存在于 事务表) 如果记录已经存在,则结果集应位于查询的最后一部分 我曾经在这里询问过。我将合并这两个数据集或使用联合 我这里有一个问题,但它似乎不起作用: SELECT m.studno, m.studname FROM MASTERTABLE M inner JOIN TRANSACTTABLE S ON m.STUDN

我有两个表,一个主表和一个事务表。我想把这些东西分类 基于以下条件的主表查询结果:如果已输入学号和学名 存在于事务表中,或者如果记录(stud no,studname)已经存在于 事务表)

如果记录已经存在,则结果集应位于查询的最后一部分

我曾经在这里询问过。我将合并这两个数据集或使用联合

我这里有一个问题,但它似乎不起作用:

SELECT m.studno, m.studname FROM MASTERTABLE M 
inner JOIN TRANSACTTABLE S
ON m.STUDNO <> s.STUDNOO  and  m.studname <> s.studname
--此查询用于现有记录,并且应位于查询集的最后一行

SELECT m.studno, m.studname FROM MASTERTABLE M 
inner JOIN TRANSACTTABLE S
ON m.STUDNO = s.STUDNOO  and  m.studname = s.studname
仅举一个例子:

假设MASTERTABLE包含

id, studno,    studname
9    78797     aaa
10  878         bbb
11  675         ccc
12  099         ddd
可交易

id,     studno,    studname
13    878 bbb
14     675 ccc
查询结果应为:

   studno, studname
    78797 aaa
    099 ddd
    878 bbb
    675 ccc
前两行应该由studname aaa和ddd组成,因为这两行没有 存在于transact表中,后两个是bbb&ccc,因为它存在 存在于tranasct表中

我怎样才能做到这一点

谢谢。请帮助

尝试以下操作:

SELECT m.studno, m.studname
FROM MASTERTABLE M
LEFT JOIN TRANSACTTABLE S ON m.STUDNO = s.STUDNOO  and  m.studname = s.studname 
ORDER BY s.STUDNO

s.STUDNO中的空值将收集所有不匹配的行。

试试这个-它基本上使用Phil的答案所具有的
左外部联接,并且基于
TransactionTable
是否有值,它定义了一个
序列
值并根据该值进行排序:

DECLARE @MasterTable TABLE (ID INT, StudNo INT, StudName VARCHAR(20))

INSERT INTO @MasterTable 
  VALUES(9, 78797, 'aaa'), (10, 878, 'bbb'), (11, 675, 'ccc'), (12, 099, 'ddd')

DECLARE @Transact TABLE (ID INT, StudNo INT, StudName VARCHAR(20))

INSERT INTO @Transact 
  VALUES(13, 878, 'bb'), (14, 675, 'ccc')

SELECT 
    m.studno, m.studname,
    CASE WHEN s.studname IS NULL THEN 1 ELSE 0 END 'Sequence'
FROM 
    @MASTERTABLE M
LEFT OUTER JOIN 
    @TRANSACT S ON m.STUDNO = s.STUDNO  
ORDER BY 
    sequence DESC, s.STUDNO DESC
我得到的输出是:

studno  studname  Sequence
78797   aaa         1
   99   ddd         1
  878   bbb         0
  675   ccc         0

@布莱尔-什么不起作用?(除了打字错误以外)你介意再帮我一次吗?你介意再帮我一次吗?