コードで$delay
は、行内のデータではなく、結果を表すオブジェクト全体です。
ただし、次のような 1 つのステートメントで実行することもできます。
update `FlightSchedule` set delay=(SELECT MINUTE (ETA - STA)
FROM `FlightSchedule` WHERE `flightNum_arr`='".$flightNum_arr."');";
編集:
代わりにこれを試して、MySQL が行うばかげたロックを回避してください:)
update `FlightSchedule` set delay=(select * from (SELECT MINUTE (ETA - STA)
FROM `FlightSchedule` WHERE `flightNum_arr`='".$flightNum_arr."'));";
編集2:(別名、頭のてっぺんから走り書きするだけでなく、クエリをテストする必要があります...)
mysql> select * from updatetest;
+------+------+
| var1 | var2 |
+------+------+
| 450 | 1 |
| 100 | 5 |
+------+------+
2 rows in set (0.00 sec)
mysql> update
updatetest set var2=
(select * from
(select var2 from updatetest where var1=100)
updater);
Query OK, 1 row affected (0.00 sec)
Rows matched: 2 Changed: 1 Warnings: 0
mysql> select * from updatetest;
+------+------+
| var1 | var2 |
+------+------+
| 450 | 5 |
| 100 | 5 |
+------+------+
2 rows in set (0.00 sec)