2011-11-14 48 views
7
'da

Üç tablom var: çoktan çoğa ilişkisi olan kişiler, alanlar ve kişiler_domainler.MySQL Güncelleştirme Altkümesi

Contacts_domains tablosunu güncelleyen bir sorguyu çalıştırmak istiyorum, ancak yalnızca tam olarak bir kişi içeren etki alanları için.

İlgilendiğim satırları SEÇ, ancak bunları nasıl güncelleyeceğinizi bilmiyorum.

SELECT domain_id, contact_id, dominant 
FROM contacts_domains 
GROUP BY domain_id 
HAVING COUNT(contact_id) = 1 

Tüm bu sonuçlar için contacts_domains.dominant = 1 değerini ayarlamak istiyorum.

Teşekkürler!

cevap

-4

basit çözüm:

UPDATE contacts_domains cd SET cd.dominant = 1 
WHERE cd.id IN (
SELECT dominant_id 
FROM contacts_domains 
GROUP BY domain_id 
HAVING COUNT(contact_id) = 1 
) 

Edited.

+7

yardımcı olacaktır Umut: '' HATA 1093 (HY000): Hedefi belirleyemezsiniz FROM yan tümcesinde 'cd' güncelleştirmesi için yukarıdaki ' –

+0

yukarıda belirtildiği gibi çalışmıyor. – sym

28

Böyle bir sorun yaşadım. tabloyla katılmadan ile deneyin select ile yapmak:

UPDATE contacts_domains cd, 
(SELECT id FROM contacts_domains GROUP BY domain_id 
    HAVING COUNT(contact_id) = 1) AS cdtmp 
SET cd.dominant = 1 
WHERE cd.id = cdtmp.id 

o MySQL şu ile başarısız olur, çünkü bu çalışmıyor

+9

çok basit: piotreks cevap doğru ve işe yarıyor, kabul edilen cevap yanlış bir işe yaramıyor (yorumda belirtildiği gibi) – bytepirate

+0

bu benim için çalıştı. Teşekkürler – sym

İlgili konular