2017-09-28 207 views
-1

我有两个不同的表'TABLE1'和'TABLE2'。这两个表具有相同的列名称 - 'IS_PDF'。如何为两个不同条件设置SQL条件优先级

RE TABLE1.IS_PDF值,我使用检索选择语句其中I加入where子句像下面的所需的详细信息。

select * from TABLE1 where TABLE1.IS_PDF = 'Y'; 

同样,我可以得到TABLE2值以及其中TABLE2.IS_PDF =“Y”

现在,我的任务是有一个select语句从两个表“TABLE1了解详细内容'和'TABLE2'通过设置优先于以下条件#1

  1. 如果TABLE1.IS_PDF = 'Y',返回匹配相同条件的记录。
  2. 如果TABLE1.IS_PDF = 'N'TABLE2.IS_PDF = 'Y'然后返回匹配的相同条件记录。
  3. 如果两者都有IS_PDF ='N',则不返回任何内容。

我在下面使用Select语句,但只在同一时间获得上述条件#1和2。

select * from TABLE1, TABLE2 
where 
(TABLE1.IS_PDF = 'Y') or (TABLE2.IS_PDF = 'Y' and TABLE1.IS_PDF = 'N') 

请同样指导。 感谢

+1

示例数据真的有帮助。 –

+0

也PKs和FKs –

回答

1

你似乎想是这样的:

select t1.* 
from table1 t1 
where t1.is_pdf = 'Y' 
union all 
select t2.* 
from table2 t2 
where t2.is_pdf = 'Y' and 
     not exists (select 1 from table1 t1 where t1.is_pdf = 'Y' and t1.?? = t2.??); 

??表示用于两个表之间的匹配列(S)。

+0

请参阅下面的帖子中的示例代码。 – Jatin

0

感谢您的快速响应。

样品代码 -

select TABLE1.IS_PDF, TABLE2.IS_PDF, TABLE1.ID, TABLE1.GLOBAL_ID, TABLE1.title, 
from TABLE1, TABLE2 
where TABLE1.USER_ID = 82340 
and TABLE1.NAME = 'INDIA' 
and (TABLE1.IS_PDF = 'Y') or (TABLE2.IS_PDF = 'Y' and TABLE1.IS_PDF = 'N') 

我需要设置优先级下面条件#1,如果条件#1满足,它的罚款。否则,去#2然后#3。

  1. 如果TABLE1.IS_PDF = 'Y',返回匹配相同条件的记录。
  2. 如果TABLE1.IS_PDF ='N'但TABLE2.IS_PDF ='Y',则返回匹配相同条件的记录。
  3. 如果两者都有IS_PDF ='N',则不返回任何内容。
+0

。 。我怀疑你应该真的用这些信息来编辑问题。然后你可以删除这个答案。 –