Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 - Fatal编程技术网

Mysql 尝试按排序时出现未知错误,以防

Mysql 尝试按排序时出现未知错误,以防,mysql,Mysql,订购人 返回一个错误子查询返回多行,但如果我删除ORDER BY或按其他列对其排序,则查询运行时不会出错 截图: 您需要提供更多详细信息,说明为什么在此处使用案例陈述。您试图通过此查询获得的结果是什么?您的查询从bizboxgntr xxx中选择countxxx.FK_psPatRegisters,其中xxx.FK_psPatRegisters=a.FK_psPatRegisters,并从bizboxgntr aa中选择distinct SELECT sumaa.amount,其中aa.FK_

订购人

返回一个错误子查询返回多行,但如果我删除ORDER BY或按其他列对其排序,则查询运行时不会出错

截图:


您需要提供更多详细信息,说明为什么在此处使用案例陈述。您试图通过此查询获得的结果是什么?您的查询从bizboxgntr xxx中选择countxxx.FK_psPatRegisters,其中xxx.FK_psPatRegisters=a.FK_psPatRegisters,并从bizboxgntr aa中选择distinct SELECT sumaa.amount,其中aa.FK_employee=xxy.FK_employee和yearaa.datetime=yearxxy.datetime从bizboxgntr xxy中选择xxy.FK_psPatRegisters=a、 FK_psPatRegisters<20000将不会返回单行。@Sameer Mirji但如果我删除ORDER BY子句,查询将正常运行,这怎么可能?如果上面的查询返回的值超过1,即使没有ORDERBY子句,它仍然会有一个错误。问题不是这样。您编写的查询本身似乎没有任何意义。您试图通过此查询实现什么?解释一下你想在这里过滤哪些数据。Sameer是对的。我假设子查询返回多行,但不指定任何顺序,mysql只选择第一个结果进行比较。请注意,这很可能不是您想要的结果,因为每个子选择的第一个结果是未指定的。在我看来,mysql也应该给出错误,而不使用order by,但是通过尽可能地提供帮助,它不会。我试图过滤掉所有FK_psPatRegisters示例:如果FK_psPatRegisters在表trxpost中,我将其标记为1,如果FK_psPatRegisters在表bizboxgntr中,并且数量小于2000,我将其标记为2,如果FK_psPatRegisters在表bizboxgntr中且等于20000,则将其标记为4;如果FK_psPatRegisters在表bizboxgntr中且大于2000,则将其标记为5,否则为3
 SELECT 
     *,
     a.FK_psPatRegisters,
     CASE
         WHEN (SELECT count(x.FK_psPatRegisters) FROM trxpost x WHERE x.FK_psPatRegisters = a.FK_psPatRegisters AND a.FK_psPatRegisters 
             NOT IN (SELECT FK_psPatRegisters FROM bizboxgntr)) > 1 THEN 1
         WHEN (SELECT count(xxx.FK_psPatRegisters) FROM bizboxgntr xxx WHERE xxx.FK_psPatRegisters = a.FK_psPatRegisters) AND 
              (SELECT distinct (SELECT sum(aa.amount) FROM bizboxgntr aa WHERE aa.FK_employee = xxy.FK_employee AND year(aa.datetime) = year(xxy.datetime)) 
              FROM bizboxgntr xxy WHERE xxy.FK_psPatregisters = a.FK_psPatRegisters) < 20000 THEN 2 
         WHEN (SELECT distinct (SELECT sum(ab.amount) FROM bizboxgntr ab WHERE ab.FK_employee = xxz.FK_employee AND year(ab.datetime) = year(xxz.datetime)) 
              FROM bizboxgntr xxz WHERE xxz.FK_psPatregisters = a.FK_psPatRegisters) = 20000 THEN 4
         WHEN (SELECT distinct (SELECT sum(ac.amount) FROM bizboxgntr ac WHERE ac.FK_employee = xxa.FK_employee AND year(ac.datetime) = year(xxa.datetime)) 
              FROM bizboxgntr xxa WHERE xxa.FK_psPatregisters = a.FK_psPatRegisters) > 20000 THEN 5
         ELSE 3 
     END AS `post`
FROM bizboxtbl a
ORDER BY post