スタック上のソリューションを検索するのに数時間を費やした後、私はこの回答を正解できないようです。mysql update queryが別の列で動作しない
私は2つのテーブルを持っている:表中の "修理" & "関係"
"修理" は "repair_external_supplierID"、 "relation_id" という名前の4列、 "cliendID" と "仕入先" があります。 (ID列以外)
テーブル "relation"には、 "sRelationNumber" & "sCustomerNumber"という2つの列があります。
「修理」の「supplierID」は空であり、「修理」の「repair_external_supplierID」が「sRelationNumber」と一致する「Relation」の列「ID」のデータで埋められる必要があります。修理 『から『relation_id関係 『から『sCustomerNumber』欄に一致する』「列はときに埋められていなければならない修理、』「関係」
同じことをして、「クライアントID」のために行く』
これはコード:一部reasoneについて
/*--SET SUPPLIER ID --*/
UPDATE repairs
SET supplierID = (
SELECT
id
FROM
relation
WHERE
relation.sRelationNumber = repairs.repair_external_supplierID
)
WHERE
supplierID = '' OR supplierID IS NULL;
/*--SET CLIENT ID --*/
UPDATE repairs
SET clientID = (
SELECT
id
FROM
relation
WHERE
relation.sCustomerNumber = repairs.relation_id
)
WHERE
clientID = '' OR clientID IS NULL;
計画通り最初のクエリが動作する、第1のサブクエリが1行以上を返す」返します"
なぜですか?
自明である - サブクエリが複数の行を返すことさえ伝えます。あなたが何をしているのか見てみましょう。あなたは 'clientID'値を数字で更新したいと思っています。サブクエリを発行します。サブクエリは条件を満たす行が2つ以上見つかったので、その値は 'clientID'に収まらない。最初のクエリでは1行以上の結果が得られないので問題ありません。あなたがしなければならないことは、座ってこの背後にある論理を推論することです。 – Mjh
'relation.sCustomerNumber = repairs.relation_id'は複数の行を返すためです。 – Scott
しかし、 "relation.sRelationNumber = repairs.repair_external_supplierID"は複数の行も返します。そのため、私は問題を見つけることができません:( – George