2012-05-31 66 views
0

编辑:Mysql:相同的查询,不同的结果

对不起,关于无法读取的查询,我在截止日期之前。我设法通过将这个查询分解为两个较小的查询来解决问题,并在Java中执行一些业务逻辑。仍然想知道为什么这个查询可以随机时间返回两个不同的结果。

所以,它随机返回一次所有预期的结果,其他时间只是一半。我注意到,当我编写每个连接的join时,并在每次连接后执行,最后它会返回所有预期的结果。所以,如果有某种MySql内存或其他限制,它不会在连接中占用整个表,就会游荡。还阅读不确定的查询,但不知道该说什么。

请帮忙,询问是否需要澄清,并提前谢谢。

RESET QUERY CACHE; 

SET SQL_BIG_SELECTS=1; 

set @displayvideoaction_id = 2302; 
set @ticSessionId = 3851; 


select richtext.id,richtextcross.name,richtextcross.updates_demo_field,richtext.content from 
(
select listitemcross.id,name,updates_demo_field,listitem.text_id from 
(
select id,name, updates_demo_field, items_id from 
(
SELECT id, name, answertype_id, updates_demo_field, 
@student:=CASE WHEN @class <> updates_demo_field THEN 0 ELSE @student+1 END AS rn, 
@class:=updates_demo_field AS clset FROM 
(SELECT @student:= -1) s, 
(SELECT @class:= '-1') c, 
(
select id, name, answertype_id, updates_demo_field from 
(
select manytomany.questions_id from 
(
select questiongroup_id from 
(
select questiongroup_id from `ticnotes`.`scriptaction` where [email protected] and questiongroup_id is not null 
) scriptaction 
inner join 
(
select * from `ticnotes`.`questiongroup` 
) questiongroup on scriptaction.questiongroup_id=questiongroup.id 
) scriptgroup 
inner join 
(
select * from `ticnotes`.`questiongroup_question` 
) manytomany on scriptgroup.questiongroup_id=manytomany.questiongroup_id 
) questionrelation 
inner join 
(
select * from `ticnotes`.`question` 
) questiontable on questionrelation.questions_id=questiontable.id 
where updates_demo_field = 'DEMO1' or updates_demo_field = 'DEMO2' 
order by updates_demo_field, id desc 
) t 
having rn=0 
) firstrowofgroup 
inner join 
(
select * from `ticnotes`.`multipleoptionstype_listitem` 
) selectlistanswers on firstrowofgroup.answertype_id=selectlistanswers.multipleoptionstype_id 
) listitemcross 
inner join 
(
select * from `ticnotes`.`listitem` 
) listitem on listitemcross.items_id=listitem.id 
) richtextcross 
inner join 
(
select * from `ticnotes`.`richtext` 
) richtext on richtextcross.text_id=richtext.id; 
+4

这是完全不可读的。我甚至不知道是否有两个查询。请更好地格式化它。 –

+0

它的一个查询,你现在可以读吗? –

回答

4

我的第一印象是 - 不要用捷径来描述你的表格。我迷失在哪个td3是哪里,然后td6tdx3 ......我想你可能会失去。 如果你更明智地给你的别名命名,那么错误出现的机会就会减少,而将8与其他任何东西混合成6。

只是sugestion :)

有关于MySQL没有限制,所以我的选择将是对人类的错误 - 某个地方有加盟逻辑失败。

相关问题