select
これは、クエリが列に対して複数の値を返す場合があるためです。value
UPDATE table_name
SET value = (SELECT max(value) FROM table_name WHERE key = "weather")
WHERE key = "colour";
また
UPDATE table_name
SET value = (SELECT value FROM table_name WHERE key = "weather" limit 1)
WHERE key = "colour";
サブクエリ内の のインスタンスを に置き換えることで、このように変更することができtable_name
ます(SELECT * FROM table_name)
:
UPDATE table_name
SET table_name.A =
(
SELECT B
FROM (SELECT * FROM table_name) AS something
INNER JOIN ...
)
また、MySQL で更新ターゲットから選択する方法も確認してください。
実際には、サブクエリで SELECT * FROM table だけを使用したくはありません。例をシンプルにしたかっただけです。実際には、最も内側のクエリで必要な列のみを選択し、適切な WHERE 句を追加して結果を制限する必要もあります。
編集:-
あなたがすでにコメントしているように、私は上記のように一時テーブルを使用するように答えました:-
UPDATE table_name
SET value = (SELECT value FROM (SELECT value FROM table_name WHERE key="weather") AS x)
WHERE key="colour"