2011-03-28 21 views
7

यह मेरे SQL-foo के लिए थोड़ा मुश्किल है।एक कॉलम बढ़ाएं यदि एक पंक्ति पहले से ही एक ही मान के साथ मौजूद है

मुझे क्या करना है एक नई पंक्ति डालें (जिसमें 3 कॉलम हैं), जब तक कोई पंक्ति पहले से मौजूद नहीं है, जहां उनमें से दो मान समान हैं, और यदि यह अस्तित्व में है, तो मुझे तीसरे मान में वृद्धि करने की आवश्यकता है उस पंक्ति पर।

कल्पना करें कि दो मूल्य एक रिश्ते (ए, बी) हैं और तीसरा मूल्य संबंधों की ताकत है (जो उस संबंध के हर समय के साथ बढ़ता है)।

अग्रिम धन्यवाद!

+0

पर एक UNIQUE (a, b) या PRIMARY KEY (a, b) बाधा किया है हम यह मान सकते हैं कि (क, ख) इस तालिका के लिए अद्वितीय है? विशेष रूप से, क्या हम इस पर एक अद्वितीय इंडेक्स डाल सकते हैं? – tloach

+0

@ ट्लोच हां, (ए, बी) हमेशा इस तालिका के लिए अद्वितीय है, मान बी अद्वितीय है (रिश्ते का दूसरा सदस्य), मान ए कई बार प्रकट हो सकता है। – Filipe

उत्तर

12
INSERT 
INTO a_b (a, b, strength) 
VALUES ($a, $b, 1) 
ON DUPLICATE KEY 
UPDATE strength = strength + 1 

सुनिश्चित करें कि आप तालिका

+0

यह एक ही मान के साथ काम करता है, लेकिन अगर मैं यह जांचना चाहता हूं कि एक पंक्ति पहले से ही दो मानों के साथ मौजूद है या नहीं? – Filipe

+0

@ फिलिप: यदि आपके पास तालिका में '(1, 1)' है, तो '(2, 1)' या '(1, 2) 'डालने से सम्मिलित होगा, लेकिन' (1, 1) 'डालना होगा। क्या आप यह नहीं चाहते थे? – Quassnoi

संबंधित मुद्दे