Oracle SQL Developer从数据库中找到特定数据

时间:2018-09-10 15:27:41

标签: sql oracle

我只想从数据库中选择带有单个文档的仅D LineType的数据。我在数据库中有2个表,它应该与另一个表链接。下面是我的代码:

SELECT ID, DOC, LNTY
FROM Table1
WHERE LNTY='DF'
UNION 
SELECT ID, DOC, LNTY
FROM Table2 
WHERE LNTY='DF'

我的数据库:

Table 1
Doc     LNTY
001     D
001     B
002     B
002     D
003     S
004     D
005     B
006     D

Table 2
Doc     LNTY
004     B
007     D
007     B
008     D

预期输出:

Doc     LNTY
006     D
008     D

我的代码不起作用,因为它将显示所有D LineType,而不是仅包含一个D LineType的单个文档。预先感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:3)

您可以将UNION ALLselect Doc, min(LNTY) from table1 t1 group by Doc having min(LNTY) = max(LNTY) and min(LNTY) = 'D' union all select Doc, min(LNTY) from table2 t2 group by Doc having min(LNTY) = max(LNTY) and min(LNTY) = 'D'; 结合使用:

group by

我认为这段代码已经包含了两个select Doc, min(LNTY) LNTY from (select Doc, LNTY from table1 t1 union all select Doc, LNTY from table2 t2 ) t group by Doc having min(LNTY) = max(LNTY) and min(LNTY) = 'D'; ,所以我只是将其简化为反映以下对话:

{{1}}

答案 1 :(得分:1)

要获得所需的输出,可以使用:

<div class="container-fluid" id="sqlcontainerLoggedInPage2">
  <textarea id="diary" class="form-control"><?php echo $diaryContent; ?></textarea>
</div>

SQLFiddle here

答案 2 :(得分:0)

您可以使用 rownum ,它肯定可以正常工作:-

create table ns_table1(
doc varchar(10),
lnty varchar(10));

create table ns_table2(
doc varchar(10),
lnty varchar(10));

insert into ns_table1 values('001','D');
insert into ns_table1 values('001','B');
insert into ns_table1 values('002','B');
insert into ns_table1 values('002','D');
insert into ns_table1 values('003','S');
insert into ns_table1 values('004','D');
insert into ns_table1 values('005','B');
insert into ns_table1 values('006','D');

insert into ns_table2 values('004','B');
insert into ns_table2 values('007','D');
insert into ns_table2 values('007','B');
insert into ns_table2 values('008','D');



select * from ns_table1 where rownum<=8 minus select * from ns_table1 where rownum<=7 union all  
select * from ns_table2 where rownum<=4 minus select * from ns_table2 where rownum<=3;