这是我的查询的一部分。以下查询返回如下所示的行:
ref = Google
以及hash is found
表格上的elements_actions
。
但是,我想得到以下行:
ref = Google
但现在,hash is NOT found
进入elements_actions
表。
例如,如果
所有来自Google的都是100,以下查询返回60,new_table
200行,这意味着相反的必须返回40。
我试着用elements_actions.hash != new_table.hash
没有运气。
FROM behaviour, new_table, elements_actions
WHERE
behaviour.ref = 'Google'
AND elements_actions.hash = new_table.hash
AND elements_actions.element_id = 3
答案 0 :(得分:0)
可能最直接的方法是直接向DB询问使用“NOT EXISTS”在该表中不存在哪些
FROM behaviour, new_table
WHERE
behaviour.ref = 'Google'
AND NOT EXISTS (SELECT * FROM elements_actions WHERE elements_actions.hash = new_table.hash AND elements_actions.element_id = 3)
您还可以在elements_actions.hash = new_table.hash上使用左外连接,然后在WHERE子句中检查“new_table.hash is null”。
答案 1 :(得分:0)
您想使用左外连接。您的帖子没有显示行为和elements_actions之间的联接,因此您需要添加它。
FROM behaviour
JOIN elements_actions ON ([[you need to provide the join columns here between behavior and elements_actions]])
LEFT OUTER JOIN new_table ON (elemtns_actions.hash = net_table.hash)
WHERE behaviour.ref = 'Google'
AND elements_actions.element_id = 3
AND new_table.hash IS NULL
左外连接返回内部连接中的所有值以及左表中与右表不匹配的所有值,包括链接列中具有NULL(空)值的行。
这个维基百科条目有很多关于联接类型的好信息,但它可以通过数学来咄咄逼人。 https://en.wikipedia.org/wiki/Join_(SQL)#Left_outer_join