Я выполняю упражнение ранжирования для значений в моей базе данных. Каждый столбец имеет год и каждый имеет 76 значений (т.е. 76 строк под каждым годом). Годы с 1980 по 2035 год. Мой сценарий должен проходить каждый год (колонка) по очереди и ранжировать значения (т. Е. Упорядочивать их в порядке возрастания, а затем выплевывать связанные идентификаторы).
Я написал сценарий ниже, и он работает, но это занимает три секунды, которые, я думаю, очень медленные. Для первого столбца (1980) это быстро, так как я могу вставить их за один раз. Для остальных я не могу, так как мне нужно ОБНОВИТЬ таблицу и, следовательно, сопоставлять строки – это приводит к отдельному SQL-запросу для каждого значения.
Есть лучший способ сделать это? Вот мой код:
for ($x = 1980; $x <= 2035; $x++) { $sql="SELECT `ID`,`$x` FROM marginal_costs ORDER BY `$x`"; $concat = ""; $counter = 1; $result = mysqli_query($con,$sql); while($row = mysqli_fetch_array($result)) { if($x==1980) { $concat = $concat."('".$row['ID']."'), "; } else { $upload="UPDATE `merit_order` SET `$x`='".$row['ID']."' WHERE `ID`='$counter';"; echo $upload; mysqli_query($con, $upload); $counter= $counter + 1; } } if($x==1980) { $concat = substr_replace($concat, "", -2).";"; $upload="INSERT INTO `merit_order` (`$x`) VALUES $concat;"; mysqli_query($con, $upload); } }