2015-04-10 2 views
-2

У меня есть таблица, которая была функциональной, и я добавил столбец в таблицу. После добавления столбца я хочу добавить результат запроса (запрос один и тот же для всех, кроме разных результатов) в этот столбец одновременно, а не по одному за раз, что потребует много времени. Как я могу это достичь? Cos после обновления, у меня есть только один результат во всем столбце, я не могу использовать ИНЕКЕ потому что это потребует мне это делать один за другимВставить записи Все сразу

$stmt = $pdo->prepare("UPDATE table SET my_value = '$myValue' "); 
$stmt->execute(); 
+0

«результат запроса одинаковый для всех», но у вас есть проблема с «у меня есть только один результат во всем столбце»? –

+0

Извините, результат не совпадает, но значения этого столбца извлекаются одним и тем же запросом, но будут отличаться для разных строк. – Chidi

ответ

1
UPDATE table 
SET my_value = (select col from some_table where ...) 
1

Если значение является одинаковым для всех строк Я бы посоветовал использовать cross join:

update table t cross join 
     (select newval . . .) x 
    set t.col = x.newval; 

Примечание: это лучше, чем вложенный запрос, потому что подзапрос гарантированно будет оцениваться только один раз.

Если вы пытаетесь сказать, что значение одинаково для групп столбцов, а затем распространить это на join:

update table t join 
     (select grp, newval . . .) x 
     on t.grp = x.grp 
    set t.col = x.newval; 
0

После добавления колонки я хочу добавить результат запрос (запрос результат одинаковый для всех) в этот столбец все сразу, а не один на , время, которое будет занимать много времени.

Решение зависит от того, что вы подразумеваете под «То же самое для всех строк».

Если у вас есть одно значение, которое одинаково для всех столбцов, вы можете просто запросить его и затем обновить. Это обычно быстрее (и позволяет вам легче отлаживать), чем использование чистого SQL для достижения всего.

Если, с другой стороны, вы имеете в виду, что значения этого столбца извлекаются по одному и тому же запросу, но будут отличаться для разных строк, тогда подзапрос или перекрестное соединение, как Gordon suggested, сделают трюк.

Смежные вопросы