0

状況は次のとおりです。

  • 表の が である主な管理者がいます。idperson478
  • この管理者は、テーブルでパートナーを処理することになっていますpartners
  • それらを「結合」するテーブルがあります: person_partners.

時々、新しいパートナーを追加する人もいるので、次のクエリを実行したいと思います。

  • また:
    • この管理者とパートナーの間のすべてのリンクを削除します。DELETE * FROM person_partners where id_person=478
    • この管理者とパートナーの間のすべてのリンクを再挿入します(= 新しいパートナーも挿入されます)、ある種のINSERT INTO person_partners (id_person,id_partner) VALUES (478, SELECT id FROM partners)(ただし、このクエリでは次のエラーが表示されます: ERROR 1242 (21000): Subquery returns more than 1 row)
  • person_partnersまたは、まだ参加していないすべてのパートナーを挿入するだけですid_person=478

何か案が?

4

2 に答える 2

1

BugFinderが言ったように、「あなたは質問にあなた自身の答えを持っているようです」

ERROR 1242 を修正するには、次のように記述する必要があります。

INSERT INTO person_partners (id_person,id_partner) 
SELECT '478', id FROM partners;

または、「id_person=478 の person_partners にまだ含まれていないすべてのパートナーを単に挿入する」こともできます。

INSERT IGNORE INTO person_partners (id_person,id_partner) 
SELECT '478', id FROM partners;

詳しくはこちらをご覧ください。

于 2012-08-23T10:40:09.470 に答える
0
INSERT INTO person_partners (id_person,id_partner) SELECT 478, ID FROM partners
ON DUPLICATE KEY UPDATE id_person=478;
于 2012-08-23T10:43:30.787 に答える