【问题标题】:Mysql: same query, different resultsMysql:相同的查询,不同的结果
【发布时间】:2012-06-02 01:53:41
【问题描述】:

编辑:

抱歉,查询不可读,我已在截止日期前。我设法通过将此查询分成两个较小的查询并在 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;

【问题讨论】:

  • 这是完全不可读的。我什至不知道是否有两个查询。请更好地格式化它。
  • 只有一个查询,你现在能看吗?

标签: mysql sql


【解决方案1】:

我的第一印象是 - 不要使用捷径来描述您的表格。我迷失了td3 所在的位置,然后td6tdx3... 我猜你也可能迷路了。 如果您更合理地命名您的别名,那么出错并将 6 与 8 或其他任何内容混合在一起的机会将更少。

只是一个建议:)

mySQL 没有限制,所以我的赌注是人为错误 - 某处连接逻辑失败。

【讨论】:

    猜你喜欢
    • 2014-09-24
    • 2021-10-27
    • 1970-01-01
    • 2020-03-12
    • 2012-02-05
    • 2019-02-06
    • 2021-11-19
    • 2012-06-22
    • 1970-01-01
    相关资源
    最近更新 更多