MySQL कॉलम मान ए के साथ प्रत्येक पंक्ति के लिए, कॉलम मान बी के साथ एक नई पंक्ति जोड़ें, यदि कोई पहले से मौजूद नहीं है - mysql

मेरे पास कॉलम के साथ एक टेबल है id, foo_id, तथा bar_id

मैं टेबल के माध्यम से और प्रत्येक विशिष्ट के लिए जाना चाहता हूँ foo_id, अगर उसके लिए एक पंक्ति है foo_id के साथ bar_id 2 के बराबर, मैं इसके साथ एक नई पंक्ति जोड़ना चाहता हूं foo_id और एक के साथ bar_id 3 के बराबर, जब तक कि एक पंक्ति के साथ foo_id तथा bar_id 3 में से पहले से मौजूद है।

उदाहरण के लिए:

पहले:

id | foo_id | bar_id
--------------------
1  | 1      | 1
2  | 1      | 2
3  | 2      | 2
4  | 2      | 3
5  | 3      | 2
6  | 4      | 1

बाद:

id | foo_id | bar_id
--------------------
1  | 1      | 1
2  | 1      | 2
3  | 2      | 2
4  | 2      | 3
5  | 3      | 2
6  | 4      | 1
7  | 1      | 3
8  | 3      | 3

मैंने इस क्वेरी को आजमाया है, लेकिन यह वास्तव में लंबा समय ले रहा है (> 20 मिनट) और मुझे नहीं पता कि यह काम करता है या नहीं:

INSERT INTO mytable (bar_id, foo_id)
SELECT 3, (@var := foo_id) AS foo_id FROM mytable
WHERE bar_id=2 AND NOT EXISTS (
SELECT 1 FROM mytable
WHERE bar_id=3 AND [email protected]
) LIMIT 1;

क्या कोई जानता है कि मैं क्या कर रहा हूं?

उत्तर:

उत्तर № 1 के लिए 1

इसे इस्तेमाल करे:

 INSERT INTO mytable (bar_id, foo_id)
SELECT 3, foo_id
FROM mytable
WHERE bar_id=2 AND foo_id NOT IN (
SELECT foo_id FROM mytable WHERE bar_id=3
);

संबंधित सवाल
सबसे लोकप्रिय