繁体   English   中英

MySQL:相同的查询,不同的结果

[英]Mysql: same query, different results

编辑:

抱歉,查询不可读,我快要截止了。 我设法通过将此查询分为两个较小的查询并在Java中进行一些业务逻辑来解决问题。 仍然想知道为什么该查询可以随机次数返回两个不同的结果。

因此,它随机返回一次所有预期结果,而其他时间仅返回一半。 我注意到,当我将其写入每个连接的联接,并在每个联接之后执行时,最后它会返回所有预期结果。 因此,如果存在某种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 ticsession_id=@ticSessionId 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;

我的第一印象是-不要用捷径来描述您的桌子。 我迷路了在哪个td3 ,然后是td6tdx3 ...我想你也可能迷路了。 如果您更合理地命名别名,则出错的可能性较小,将6与8或其他任何值混合使用。

只是一个建议:)

mySQL没有限制,所以我的赌注将放在人为错误上-某个地方的连接逻辑失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM