กำลังกรองแถวกับโพรโทคอล aimcomment ค่าเดียวที่มีค่าอยู่แล้วมีอแถวกับที่มองไม่โพรโทคอล aimcomment ค่า

0

คำถาม

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

ผมมีเลือกแถลงการณ์กับกลุ่มโดยที่จะได้ค่าคอยตามค่า. นี่เป็นแค่การ subset ของ 170k แถว.

SELECT        child, parent
FROM            (SELECT child, parent
                          FROM table
                          GROUP BY child, parent) AS derivedtbl_1
ORDER BY child
เด็กคน พ่อแม่คน
201 โพรโทคอล aimcomment
201 991
201 1020
202 โพรโทคอล aimcomment
203 โพรโทคอล aimcomment

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

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

เด็กคน พ่อแม่คน
201 991
201 1020
202 โพรโทคอล aimcomment
203 โพรโทคอล aimcomment
sql sql-server
2021-11-23 09:48:35
2

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

2

คุณอาจจะใช้อยู่ตรรกะที่นี่:

SELECT child, parent
FROM yourTable t1
WHERE
    Parent IS NOT NULL OR
    (Parent IS NULL AND
     NOT EXISTS (SELECT 1 FROM yourTable t2
                 WHERE t2.Child = t1.Child AND
                       t2.Parent IS NOT NULL));

screen capture from demo link below

สาธิต

2021-11-23 09:55:57
0

คุณสามารถใช้เป็นหน้าต่างฟังก์ชันสำหรับเรื่องนี้ มันอาจจะเร็วหรือช้าลงกว่าการใช้ EXISTS ตัวเองเข้าร่วมกับคุณต้องการจะทดสอบ

SELECT
  child,
  parent
FROM (
    SELECT
      child,
      parent,
      AnyParent = MAX(parent) OVER (PARTITION BY child)
    FROM [table]
    GROUP BY child, parent
) AS derivedtbl_1
WHERE AnyParent IS NOT NULL;
ORDER BY child
2021-11-23 17:28:56

ในภาษาอื่นๆ

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

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

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

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