เพิ่มใหม่แถว(ค่าโพรโทคอล aimcomment)เพื่อเป็นหลายพ่อแม่เด็กน้องลำดับชั้นในผังต้นไม้

0

คำถาม

ฉันมีหลายพ่อแม่เด็กน้องลำดับชั้นในผังต้นไม้ consisting ของ 100k+รายการบันทึก นี่เป็นเรื่องเล็ก subset.

เด็กคน พ่อแม่คน
1 2
1 3
2 3

ฉันต้องการที่จะผ่านแต่ละค่าจากคอลัมน์พ่อแม่และตรวจสอบว่าคนเดียวกับค่ายังอยู่ในคอลัมน์เด็กน้อย ถ้ามันไม่ได้แล้วสร้างแถวกับ(ค่าโพรโทคอล aimcomment). ในวอย่างเช่นค่า 3 ยังไม่มีอยู่ในห้องเด็กคอลัมน์ดังนั้นฉันต้องการมันเพื่อสร้างใหม่แถวกับค่า(3,โพรโทคอล aimcomment).

เด็กคน พ่อแม่คน
3 โพรโทคอล aimcomment
1 2
1 3
2 3

ขอรหัสไม่ได้กลับมาเป็นข้อผิดพลาดแต่มันก็ไม่ได้ทำสิ่งที่ฉันต้องการมันต้องทำ

INSERT IGNORE INTO #table (child, parent)
SELECT (CASE WHEN parent not in (Select child from #table) THEN parent END) as child, Null
FROM #table

ฉันเข้าใจหลายคนใหม่แถวกับ(โพรโทคอล aimcomment,โพรโทคอล aimcomment แต่ 0 แถวกับ(ค่าโพรโทคอล aimcomment). มันต้องมีบางอย่างที่ค้างคาใจตลอข้ามเลยไปที่อื่นอีกเงื่อนไขว่าตอนที่มีจำนวนมากดังนั้นใหม่แถวกับ(โพรโทคอล aimcomment,โพรโทคอล aimcomment)แต่ไม่แน่ใจว่าทำไมเหมือนกัน

ใช้ภาษา sql เซิร์ฟเวอร์การจัดการสตูดิโอเพิ่งอายุ 17 มีความช่วยเหลือ greatly นเกียรติอย่างยิ่ง

parent-child sql sql-server
2021-11-23 14:41:35
1

คำตอบที่ดีที่สุด

1

คุณไม่ควรใช้ case อยู่ที่นี่แต่เป็นตัวเองทิ้งร่วมกับแทน:

INSERT IGNORE INTO #table (child, parent)
SELECT DISTINCT t1.parent, NULL
FROM #table t1
LEFT JOIN #table t2
    ON t1.parent = t2.child
WHERE t2.child IS NULL

เห็นอยู่สาธิตบ Db<>ลื่นไหล

2021-11-23 14:53:26

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่