sql查询从两个表中获取记录

时间:2016-12-20 19:57:23

标签: sql oracle

表A

Id    pin    status   etc
1   11  FAILED  
2   22      
3   44      
4   55  FAILED  

表B

id   PIN      msg    counter
1    11      xyz         1
4    55      wsc         10

img

表数据:我有2个表A表(状态,id,引脚作为列),表B(计数器,id作为列)

我需要一个sql查询来选择A.status =失败的记录以及b.counter< 10

在最终结果中,我需要所有带有a.status=failedB.counter <10的记录以及表B中不会出现的新记录。

但表B中不会出现新记录,因此b.counter&lt; 10不满意。

我该如何处理这种情况?

1 个答案:

答案 0 :(得分:1)

如果我正确地解释了这一点,你想要在PIN列上连接表A和B,并且你想要记录A.status = failed和B.counter&lt; 10.但是您还希望表A中的记录在表B中没有匹配的PIN?

这可能不是最有效的查询,但如果我正确地解释了您的要求,它将完成工作。

SELECT *
  FROM A
 WHERE A.pin = B.pin
   AND A.status = 'FAILED'
   AND B.counter < 10
 UNION
SELECT *
  FROM A
 WHERE A.status = 'FAILED'
   AND A.pin NOT IN (SELECT pin FROM B);