我只想从数据库中选择带有单个文档的仅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的单个文档。预先感谢您提供的任何帮助。
答案 0 :(得分:3)
您可以将UNION ALL
与select 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>
答案 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;