2012-08-23 33 views
0

這裏的情況:mysql:如何刪除然後插入某些類型的所有記錄?

  • 我有一個主管理id,表中person478
  • 此管理員應該處理合作夥伴,在表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)(b UT斯達康這個查詢給我這個錯誤:ERROR 1242 (21000): Subquery returns more than 1 row
  • 或者乾脆id_person=478

任何想法插入並非所有的合作伙伴但在person_partners

+0

你似乎有自己的問題的答案 - 你問什麼位? – BugFinder

+0

我自己的引用:'這個查詢給我這個錯誤:錯誤1242(21000):子查詢返回多於1行)'所以它不工作,我試圖找出如何使它工作。對不起,如果我不夠清楚...不要猶豫,編輯我的問題,使其更清晰!非常感謝你 –

回答

1

像BugFinder說,「你似乎有自己的答案的問題」

修復錯誤1242,你必須把它寫這樣的:

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

或者以「簡單地插入所有合作伙伴都還沒有與id_person person_partners = 478" ,你可以

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

瞭解更多關於它here

+0

非常感謝你! –

0
INSERT INTO person_partners (id_person,id_partner) SELECT 478, ID FROM partners 
ON DUPLICATE KEY UPDATE id_person=478; 
相關問題