我有具有~2mil记录的表Inbound,其结构如下
Inbound table
ID campaign_id Entry_status Error_code
A1 1234 0 0
B1 1234 -1 -1
C1 4123 0 -15
C1 4123 0 0我还有一个表Rules,它是Entry_status和Error_code的所有组合的列表,它表示Inbound表中的有效条目。
Rules table
campaign_id Entry_status Error_code
1234 0 0
4123 0 -15我正在尝试创建一个查询,该查询将允许我根据Inbound中的Entry_status & Error_code组合列出Rules中所有有效的条目
到目前为止,我已经想出了这个问题,但它只是给了我无效的条目,我也怀疑它是错误的。
SELECT * FROM Inbound
WHERE ID not IN (
SELECT ID FROM Inbound JOIN Rules
on Inbound.campaign_id= Rules.campaign_id
where Inbound.Entry_status = Rules.ENTRY_STATUS
and
Inbound.Error_code = Rules.Error_code
) 我觉得我需要嵌套另一个查询来考虑这2列的组合来生成一个有效的条目?
查看了this,但是没有帮助,因为验证条件是字符串,而不是列的组合。
..
奖金
是否可以在ìnbound中添加true / false字段,该字段表示根据rules中的规则组合记录是否为valid
我能跑吗?
Update Inbound I
SET I.valid = if(**select function** = True , 1 ,0 )因此入站具有标记的有效和无效条目,而不仅仅是另一个表。
选择underscore-d提供的函数
select distinct Inbound.*
from Inbound
inner join Rules on
Inbound.campaign_id = Rules.campaign_id
Where
Inbound.Entry_status = Rules.Entry_status and
Inbound.Error_code = Rules.Error_code;`发布于 2015-07-21 16:06:20
select distinct Inbound.*
from Inbound
inner join Rules on
Inbound.campaign_id = Rules.campaign_id
where -- or adding these conditions to the INNER JOIN would be the same
Inbound.Entry_status = Rules.Entry_status and
Inbound.Error_code = Rules.Error_code;...or只需将您的not in更改为in,因为您的方法完全错误!尽管嵌套版本似乎比这更复杂。
https://stackoverflow.com/questions/31544123
复制相似问题