表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
表数据:我有2个表A表(状态,id,引脚作为列),表B(计数器,id作为列)
我需要一个sql查询来选择A.status =失败的记录以及b.counter< 10
在最终结果中,我需要所有带有a.status=failed
和B.counter <10
的记录以及表B中不会出现的新记录。
但表B中不会出现新记录,因此b.counter&lt; 10不满意。
我该如何处理这种情况?
答案 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);