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);
好的,我试试看。以后我会让你知道这是真的还是假的。非常感谢。