2014-02-25 111 views
-1

我有亲子关系问题。当我回答父母问题时,它显示父母和孩子。当我回答孩子时,它显示父母和孩子。但是,如果我同时回答(父母&小孩),则子问题显示两次。我知道我的查询是错误的。但无法找到。如何删除重复的数据从数据库删除显示数据库重复值

+0

如果你将简化您的样品/查询可能有更多的人会尽量帮你。 – Avt

+0

@Avt:我用这个来获得答案。如果我简化我不能从数据库中得到答案 – user2967559

+0

你可以添加查询输出的问题? – Avt

回答

0

尝试这样的显示....

DELETE 
FROM MyTable 
WHERE ID NOT IN 
(
SELECT MAX(ID) 
FROM MyTable 
GROUP BY 
DuplicateColumn1, DuplicateColumn2, DuplicateColumn3) 
+0

在哪里写这个码? – user2967559

0

这是相当困难的理解您查询。你是否尝试过添加DISTINCT语句?

SELECT DISTINCT * FROM (here paste your query) 

所以完整的查询将是继

SELECT DISTINCT * FROM (
SELECT a.QM_ID,a.QM_QCM_ID, 
     a.QM_Question,a.QM_Type, 
     a.QM_Parent_Id, 
     c.AM_Answer, 
     c.AM_Comments 
    FROM question_master a 
     INNER JOIN Assessment_master c 
      ON (c.AM_QM_ID = a.QM_ID 
       AND c.AM_HNM_ID = %d 
       AND c.AM_HM_ID = %d 
       AND c.AM_ASM_Local_Id = %@) 
WHERE a.QM_Parent_Id = 0 
     AND a.QM_Status = 'A' 
     AND a.QM_QCM_ID = %@ 
     AND a.QM_QRM_Id = %@ 

UNION 
SELECT b.QM_ID, 
     b.QM_QCM_ID, 
     b.QM_Question, 
     b.QM_Type, 
     b.QM_Parent_Id, 
     null, 
     null 
    FROM question_master b 
     INNER JOIN Assessment_master d 
      ON (d. AM_QM_ID = b.QM_Parent_Id 
       AND d.AM_HNM_ID = %d 
       AND d.AM_HM_ID = %d 
       AND d.AM_ASM_Local_Id = %@) 
WHERE b.QM_Parent_Id != 0 
     AND b.QM_Status = 'A' 
     AND b.QM_QCM_ID = %@ 
     AND b.QM_QRM_Id = %@ 

UNION 
SELECT b.QM_ID, 
     b.QM_QCM_ID, 
     b.QM_Question, 
     b.QM_Type, 
     b.QM_Parent_Id, 
     d.AM_Answer, 
     d.AM_Comments 
    FROM question_master b 
     INNER JOIN Assessment_master d 
      ON (d. AM_QM_ID = b.QM_ID 
       AND d.AM_HNM_ID = %d 
       AND d.AM_HM_ID = %d 
       AND d.AM_ASM_Local_Id = %@) 
WHERE b.QM_Parent_Id IN (SELECT QM_ID 
          FROM question_master 
          WHERE QM_Parent_Id = 0 
           AND QM_Status = 'A' 
           AND QM_QCM_ID = %@ 
           AND QM_QRM_Id = %@) 
) 
+0

我不明白。我可以粘贴哪些代码? – user2967559

+0

您的原始查询 – Avt

+0

当我回答这两个问题在第二个联盟选择查询中的问题。 – user2967559