Sql server 如何使用联合查询

Sql server 如何使用联合查询,sql-server,tsql,Sql Server,Tsql,我有如下示例数据: ========================================== Id NoSuratKeluar Perihal TglSurat ========================================== a1 111 dataA 20-09-2014 a3 333 dataC 21-09-2004 a4 444 dataD 2

我有如下示例数据:

==========================================
Id   NoSuratKeluar   Perihal   TglSurat 
==========================================
a1      111           dataA   20-09-2014
a3      333           dataC   21-09-2004
a4      444           dataD   21-09-2004
表:SuratKeluar

==========================================
Id   NoSuratKeluar   Perihal   TglSurat 
==========================================
a1      111           dataA   20-09-2014
a2      222           dataB   20-09-2014
a3      333           dataC   21-09-2004
a4      444           dataD   21-09-2004
表:SuratKeluarPermission

==================================
Id   IdSuratKeluar   KodeJabatan
==================================
1        a1            0001
2        a1            0002
3        a3            0001
4        a4            0001
我想显示来自
SuratKeluar
的数据,条件为
SuratKeluarPermission

where KodeJabatan='0001'
所需的输出如下所示:

==========================================
Id   NoSuratKeluar   Perihal   TglSurat 
==========================================
a1      111           dataA   20-09-2014
a3      333           dataC   21-09-2004
a4      444           dataD   21-09-2004

这里不能使用union,因为这两个表之间的列数和数据类型不同。我们可以使用join获得预期的结果,希望下面的查询能够提供结果:

SELECT
   SK.Id,
   SK.NoSuratKeluar,
   SK.Perihal, 
  SK.TglSurat 
FROM
   SuratKeluar AS SK INNER JOIN SuratKeluarPermission AS SKP 
   ON SK.ID = SKP.IdSuratKeluar 
WHERE
   SKP.KodeJabatan='0001';

可以使用
内部联接
实现这一点

查询 你不需要一个,你需要一个。试试这个:

SELECT SuratKeluar.Id, SuratKeluar.NoSuratKeluar, SuratKeluar.Perihal, SuratKeluar.TglSurat
FROM SuratKeluar
JOIN SuratKeluarPermission 
    ON SuratKeluar.Id = SuratKeluarPermission.IdSuratKeluar
WHERE SuratKeluarPermission.KodeJabatan = '0001'

我建议使用子查询过滤
Id

select * from SuratKeluar
where Id in (
  select IdSuratKeluar from SuratKeluarPermission
  where KodeJabatan='0001');
或按
存在的
语句进行筛选

select * from SuratKeluar t
where exists (
  select * from SuratKeluarPermission
  where KodeJabatan='0001'
  and IdSuratKeluar=t.Id);

好的,我试试看。以后我会让你知道这是真的还是假的。非常感谢。