Если это похоже на беспорядок в одном выражении SQL, то я разбиваю его и использую больше ресурсов. Для крупных сетевых приложений, которые должны сжимать каждую каплю производительности - это плохое решение.
Однако в большинстве случаев для менее требовательных обстоятельств хороший визуально-логический процесс в порядке.
Я бы выбрал свою информацию и использовал внутренний цикл языка более высокого уровня, чтобы отбросить результаты в оператор insert. Я недостаточно наказую, чтобы сделать больше вложений. На многих общих хостах существует ограничение на количество запросов, которые вы можете сделать за определенный период времени, поэтому, возможно, вам нужно создать меньше, но более крупных операторов вставки.
Для этого я, скорее всего, буду использовать PHP для обработки своих данных и SQL, я уверен, что следующее может быть адаптировано к любому языку, который вы хотели бы использовать.
<!php
$placeid=001
$sql1="SELECT column,othercolumn,maybeasterisk FROM table1 WHERE PlaceID=$placeid";
$sql2="INSERT into table2 (column,othercolumn,thirdcolumn,whymore,so-on) VALUES ('$data1a','$data1b','$data1c','$data1d','$data1e')";
$sql3="INSERT into table2 (column,othercolumn,thirdcolumn,whymore,so-on) VALUES $bigstring";
$counter=0;
$result1=mysql_query($sql1);
while ($resultrow1=mysql_fetch_array($result1)) {
$data1a=$resultrow1['1'];
$data1b=$resultrow1['2'];
$data1c=$resultrow1['3'];
$data1d=$resultrow1['whymore'];
$data1e=$resultrow1['so-on'];
if ($abillioninsertsareokay='true') {
mysql_query($sql2);
}
else {
//a billion inserts isn't okay
//build an array that we can use in a separate loop
for ($i=0, $i<=5, $i++) {
$sql3arraydata['$counter']['$i']
$counter++
}
}
$counter=0;
if ($abillioninsertsareokay!='true') {
foreach $sql3arraydata['$counter'] {
if ($counter>0) {
$bigstring.=', ';
}
$bigstring.="('$sql3arraydata['$counter'][1]','$sql3arraydata['$counter'][2]','$sql3arraydata['$counter'][3]','$sql3arraydata['$counter'][4]','$sql3arraydata['$counter'][5]')";
}
mysql_query($sql3); //one huge insert statement
}
?>
It may be the wrong way to look at things, but sometimes you just have to crank out mediocre code that works to get the job done. Yes, that would be great if you had all the time in the world to make it super awesome, but if this is the kind of question you are asking-- probably not a mission critical system for a mass amount of people.
Практически правильно, но вам нужно либо указать каждый столбец INCLUDING placeID, либо указать конкретные столбцы, которые вы будете выбирать. Вставьте в места (col1, col2, col3, col4, everycolumn_except_palceID) (выберите col1, col2, col3, col4, everycolumn_except_palceID из мест ...) – atxdba
@atxdba Уже исправлено, возможно, когда вы комментировали: –
+1 это тогда. .. – atxdba