Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按未按预期排序进行排序_Mysql_Sql - Fatal编程技术网

Mysql 按未按预期排序进行排序

Mysql 按未按预期排序进行排序,mysql,sql,Mysql,Sql,我正在使用以下查询: SELECT plan.datum, plan.anketa, plan.ai as autoinc, plan.objekt as sifra , objekt.sifra, objekt.temp4_da FROM plan LEFT JOIN objekt ON plan.objekt = objekt.sifra WHERE objekt.temp4_da = '1' AND objekt.sifra >= 30 AND plan.datum > '

我正在使用以下查询:

SELECT plan.datum, plan.anketa, plan.ai as autoinc, plan.objekt as sifra , objekt.sifra, objekt.temp4_da FROM plan 
LEFT JOIN objekt ON plan.objekt = objekt.sifra WHERE objekt.temp4_da = '1'
 AND objekt.sifra >= 30 AND plan.datum > '2019-01-15' and plan.datum < '2019-01-30'
 GROUP BY objekt.sifra
 ORDER BY plan.datum ASC, plan.objekt ASC
从计划中选择plan.datum、plan.anketa、plan.ai作为autoinc、plan.objekt作为sifra、objekt.sifra、objekt.temp4_da
在plan.objekt=objekt.sifra上左连接objekt,其中objekt.temp4_da='1'
以及objekt.sifra>=30和plan.datum>'2019-01-15'和plan.datum<'2019-01-30'
按objekt.sifra分组
按plan.DATA ASC、plan.objekt ASC排序
我得到的结果是按最后的记录排序的,尽管我确实按日期排序。

结果应为2019-01-15,但如您所见,其排序为最后日期
plan.datum<'2019-01-30'

我怎样才能做到这一点

编辑: 当我从2019-01-15选择到2019-01-20时,我实现了以下目标:

考虑到它似乎已经按照您想要的方式进行了排序,前4行显示,这些日期都在指定的范围内

您只需进行基本诊断: “计划”表是否实际包含这些日期的数据? 如果确实如此,则查询将删除数据

因此,下一个最容易检查的是
WHERE
,因此删除其他子句(即保留“基准”限制),该数据现在是否显示? 如果仍然没有,那么
左连接
就是问题所在,因为连接也是过滤器

如果您这样做,并且数据出现,那么数据和您对数据的理解不匹配,您需要检查/确认您可能对数据做出的任何假设


我对mysql不是100%熟悉,但是
groupby
看起来很奇怪,你没有对组进行任何求和、分钟或操作。您需要这行代码吗?

您的结果来自MySQL使用
groupby
处理错误SQL查询的能力。例如,大多数DBMS不能处理这样的查询

SELECT col1, col2
FROM tab
GROUP BY col1
如果
col1
tab
的主键,一些DBMS会处理此查询,但是,MySQL会始终处理此查询,如果与
col1
对应的
col2
值超过一个,MySQL会返回一个随机的
col2
值!例如,有桌子

col1 | col2
-----------
a    | 1
a    | 2
然后MySQL可能会在周一返回
(a,1)
结果,并在周二使用上面显示的SQL查询返回
(a,2)
(我有点讽刺)


我相信这也是你的情况。MySQL为每个
objekt.sifra
(查询中的group by属性)随机选择
plan.datum
,然后在结果中丢失一些
plan.datum
值。修复查询以获得确定性值,您将摆脱问题。

您的结果似乎还可以。似乎15到20之间没有通过查询的行,只有22-29?@PhamX.Bach编辑的行。检查排序结果对我来说是正确的(它是按基准字段升序排序)。但是您误用了GROUP BY子句,这可能会导致问题。@Kickstart是的,似乎GROUP BY在这里制造了问题。谢谢。
plan.datum
plan.object
独有的吗?我的意思是每个
平面。对象
只有一个对应的
平面。数据
值。MySQL不返回“随机”行。它从不确定行返回值。“随机”在统计学上意味着某种东西,MySQL的选择绝对不是随机的。只是不可靠。