gpt4 book ai didi

mysql - MYSQL 中的条件排序依据。应该影响行的一部分

转载 作者:行者123 更新时间:2023-11-29 02:01:17 25 4
gpt4 key购买 nike

enter image description here

左表是我查询的结果。我需要将其排序为正确的表格。

如果 level >= 2,我需要按 p_id 排序。右表的蓝色框是order by的对象。

这可能吗?当然是一个例子。实际数据有数百个,确实需要排序。

我搜索了很多,但没有找到相同的案例。

编辑:该表将作为 java.util.ArrayList 返回。如果这种“order by”不可能,java.util.ArrayList 是否可行?

最佳答案

我确定在 MySQL 中的一个查询中是不可能的。

在右侧的图表中,排序是通过两个独立的步骤完成的:

  1. 按id排序

  2. 如果级别 >= 2,则按 p_id 对每个 block 进行排序

这在 MySQL 中很难做到,因为您需要识别 block ,然后遍历它们,分别对每个 block 进行排序。

我做过类似的事情,其中​​需要在 block 内进行排序,然后从那些有序的 block 中进行选择。您可以查看 here但正如我所说,我认为涉及 5 个临时表的 SQL 代码非常复杂。您可能需要更少的临时表,但它仍然是一个非常复杂的过程,非常缓慢且难以维护。

"Actual data is hundreds and really need to be sorted."

有什么理由不能在代码中随意排序吗?

$blockStart = FALSE;
$count = 0;

foreach($dataArray as $data){

if($blockStart === FALSE){
$blockStart = $count;
}

if($data['level'] < 2){ //Block has finished
sortBlock($dataArray, $blockStart, $count);
$blockStart = $count;
}

$count++;
}

sortBlock($dataArray, $blockStart, $count - 1);


function sortBlock($dataArray, $indexStart, $indexEnd){

//Sort the elements of $dataArray, between $indexStart and $indexEnd inclusive
//by the value of p_id
}

当您可以在 Java 中用 1/10 的程序员时间解决它(并可能让它执行得更快)时,试图在 MySQL 中解决一个一般的编程问题并不是一个好的路径。

关于mysql - MYSQL 中的条件排序依据。应该影响行的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14249663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com