我正在使用sql数据库(phpMyadmin)和编程语言PHP。 我有一张数据表,例如:
T1: 145 138.8 110.6 1759.4 1400.9 1891.4 1755.4 1760.4
T2: 141.9 110.6 1400.9 1891.4 1758.4
我的问题> 是否存在sql语法,能够平均处于一个阈值的值(如> 1755.4,1760.4,1759.4或145,138.8)并将它们作为独特的值插入到另一个表中?
我需要的是从T1创建T2(包含UNIQUE值),并且只有在它们不存在于T2中时才插入它们。
我试图循环抛出2个数组(1starray = T1和2ndarray = T2)。并比较array1和array2中的数据,并尝试插入可以唯一的值。
for($z = 0; $z<$numberApp; $z++) {
while($j<$numberAbs-1){
$Abs=$arrayabs[$j];
$state_change = (abs($Abs - abs($previous_Abs)));
if ($state_change>100){
$instantChange = True;
echo "<br>"." better than tolerance: " . $instantChange;
}
else {
$instantChange = False;
echo "<br>"." lower than tolerance" . $instantChange;
}
//if($state_change = (abs($some_item - $previous_item)<= $tolerance)){
if($Abs != $previous_Abs){
echo "<br>" ." some_item : " .$Abs." previous_item : " .$previous_Abs;
}
//$lastAbs=$arrayabs[$j];
//echo " next_item : " .$lastAbs;
if ($instantChange == True and $onChange == False){
$Abs2 [] = $podiel;
$finalPower = $podiel;
}
if ($instantChange){
$D=0;
echo "ABSOLUT >>> " .$lastAbs;
$percentual1 = ($power_app[$z] * 0.9);
$percentual2 = ($power_app[$z] * 1.1);
if(($lastAbs<$percentual1 || $lastAbs>$percentual2)){
$user = 'root';
$pass = 'password';
$db = 'vypis';
//if($N>0){
$db = new mysqli('localhost', $user, $pass, $db) or die();
$sql = "INSERT INTO vypis.nilm_app2(power) VALUES ('$lastAbs')";
if(mysqli_query($db, $sql)){
echo "Records added successfully.";
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($db);
}
}
//$power_app[$z++];
}
感谢所有愿意帮助的人,并为我糟糕的英语道歉。
答案 0 :(得分:0)
这里的数学听起来很复杂,你可能最好不要做复杂的事情(平均值并确定值是否是唯一的)在PHP 中,然后用一对夫妇完成简单的MySQL语句。
这可能可以在纯MySQL中完成,但有点诡计,但通常不值得创建时间和复杂性。 (想象一下,你必须在六个月后调试那个怪物SQL查询!)
相比之下,在PHP中获取一些值并对它们取平均值是微不足道的;运行快速MySQL查询以确定值是否唯一也是微不足道的。因此,如果你不确定如何将它们混合成一个大的SQL语句,那么首先只需要在PHP代码中处理它们作为单独的步骤!然后,如果出现性能问题,你可以考虑如何组合它们(但至少到那时你已经有了一些有用的东西)。