在 SQL 服务器中获取重复行

Getting duplicate rows in SQL Server

屏幕截图包含 3 个表格,所有表格都与其他表格相连

第二个屏幕截图显示了 SQL 查询和获得的结果:

查询:

SELECT DISTINCT 
    t.topic_id
    , t.topic_name
    , t.topic_cover
    , t.topic_viewers
    , t1.subscribe_id 
FROM 
    tbltopic t 
INNER JOIN 
    tblsubject_grade tg ON (t.subject_garde_id = tg.subject_garde_id) 
INNER JOIN 
    tblsubcription t1 ON (tg.subject_garde_id = t1.subject_garde_id)

真正的问题是您在几个 tables

中有多个 JOIN 条件

检查这张图片:

您会看到 table tblsubject_grade 加入到其他 table 中。

您的查询应该是:

if OBJECT_ID('tempdb..#topic') IS NOT NULL DROP TABLE #topic
if OBJECT_ID('tempdb..#subjGrade') IS NOT NULL DROP TABLE #subjGrade;
if OBJECT_ID('tempdb..#subscription') IS NOT NULL DROP TABLE #subscription;

CREATE TABLE #topic (topic_id int, topic_name varchar(20), topic_cover varchar(20), topic_viewers int, teacher_id int, subject_garde_id int);
CREATE TABLE #subjGrade (subject_garde_id INT, grade_id INT, subject_id INT);
CREATE TABLE #subscription (subscribe_id INT, sub_status INT, sub_date date, student_id INT, archive_status INT, teacher_id int, subject_garde_id int);

INSERT INTO #topic (topic_id, topic_name, topic_cover, topic_viewers, teacher_id, subject_garde_id)
VALUES
(4, 'numbers',  'somestring', 0,2,1),
(6, 'shapes',   'somestring', 0,9,1),
(7, 'story time', 'somestring', 0, 2, 5)

INSERT INTO #subjGrade (subject_garde_id , grade_id , subject_id)
VALUES
(1, 1,  1),
(2, 1,  2),
(3, 1,  3),
(4, 2,  1),
(5, 2,  2),
(6, 2,  3),
(7, 2,  4),
(8, 3,  1)


INSERT INTO #subscription (subscribe_id, sub_status, sub_date, student_id, archive_status , teacher_id , subject_garde_id)
VALUES
(2, 1,  '9-7-2021', 1,0,9,1),
(3, 1,  '9-7-2021', 1,0,2,1)

SELECT
    t.topic_id
    , t.topic_name
    , t.topic_cover
    , t.topic_viewers
    , t1.subscribe_id 
FROM #topic t 
INNER JOIN #subjGrade tg ON t.subject_garde_id = tg.subject_garde_id 
INNER JOIN #subscription t1 ON 
     tg.subject_garde_id = t1.subject_garde_id
     AND t1.subject_garde_id = t.subject_garde_id 
     AND t.teacher_id = t1.teacher_id