我正在向后查询。我有一个选择查询,提取一些行...但现在我正在向后工作,并希望在相关的表中插入条目,以便选择查询带回我插入的东西。
选择查询:
SELECT DISTINCT a.catalogID, a.topicID, a.topicShortName
FROM catalog_lu_topics a
LEFT JOIN catalog b ON a.catalogID = b.catalogID
LEFT JOIN catalog_topics d ON ( a.topicID = d.topicID
AND d.topicID != 'top295' )
LEFT JOIN catalog_topics e ON ( (
d.catalogID = e.catalogID
)
AND (
e.topicID != d.topicID
) )
LEFT JOIN catalog_lu_topics f ON f.topicID = e.topicID
WHERE a.displayStatus != 'hide'
AND f.parentID = 'top305'
我在下表中插入了条目:
catalog
catalog_lu_topics (made sure that parentID = 'top305')
catalog_topics (made sure topicid is not top295)
catalog_topics (additional entry, with different topicID)
如果我再次运行上述查询,则在insert语句之后,我看不到新条目。但是,如果我从上面的选择查询中删除以下条目,那么我会看到新条目:
AND (
e.topicID != d.topicID
)
我无法绕过这个并需要一些建议。
编辑:选择a。* e.topicid,d.topicid(添加新条目后)的结果。请注意,此结果集中不会显示新条目
top335 114 Victorian Grace top301 5 gvl107 Desc display 2007-03-26 12:38:46 top318 top335
top329 34 Revived Georgian top301 2 gvl107 Desc display 2007-03-26 12:38:46 top318 top329
top338 117 DC Townhouse top301 4 gvl107 Desc display 2007-03-26 12:38:47 top318 top338
top329 34 Revived Georgian top301 2 gvl107 Desc display 2007-03-26 12:38:46 top316 top329
top336 115 Bespoke in Bethesda top301 6 gvl107 Desc display 2007-03-26 12:38:46 top316 top336
答案 0 :(得分:1)
好的,这就是发生的事情。
如果您遇到这种情况,那么您的查询中null
会收到e
个f
,后者随后用于撤回inner join
,然后您将其过滤上。你好,你正在做a.catalogid = 297
a.topicid = top398
d.catalogid = 298
d.topicid = top398
e.catalogid = 299
e.topicid = top400
,但是以迂回的方式进行。
更新:
因此,添加的条目包含:
a
所以,当d
加入topicid
时,它会通过d
,然后发现一些东西。然后catalogid
获取298
(e
),并将其与e
匹配。除了,null
找不到任何内容,因此返回f
。然后e.topicid
尝试加入e.topicid
。遗憾的是,null
是f.parentid
,但where
子句中有{{1}}个值。因此,此行被过滤掉了。