此查询提供重复记录,此查询有什么问题?

时间:2016-09-07 09:12:12

标签: mysql sql database

这是给出重复结果的查询:

SELECT a.applicant_particular_id, a.name, a.father_name, a.quota_id, 
c.hafiz_quran_marks, b.form_status 
FROM applicant_particular a,admission_choices b, academic_background c 
WHERE b.applicant_particular_id=a.applicant_particular_id 
   AND c.applicant_particular_id=a.applicant_particular_id 
   AND a.quota_id='18'
   AND b.form_status='RECEIVED' 

这是第一个表“applicant_particular”

The red highlighted rows are repeating and hafiz_quran_marks is showing with all rows

这是第一个表“applicant_particular”

   applicant_particular_id   |   name   |   father_name   |    quota_id


             1                   John        Micheal             18
             2                   khan        ali                 19

这是第二个表“admission_choices”

   choice_id   |   form_status   |   applicant_particular_id   |    program_id


           1          PENDING               2                       19
           2          RECEIVED              1                       18

这是第三个表“academic_background”

   background_id   |   hafiz_marks   |   applicant_particular_id   


           1             20                  2     
           2             30                  1             

2 个答案:

答案 0 :(得分:5)

尝试切换到显式连接,然后使用不同的bash in good measure

SELECT distinct 
        a.applicant_particular_id, 
        a.name, 
        a.father_name, 
        a.quota_id, 
        c.hafiz_quran_marks, 
        b.form_status 
FROM applicant_particular a
INNER JOIN admission_choices b
  ON b.applicant_particular_id=a.applicant_particular_id 
INNER JOIN academic_background c 
  ON c.applicant_particular_id=a.applicant_particular_id 
WHERE a.quota_id='18'
AND b.form_status='RECEIVED' 

答案 1 :(得分:1)

第二和第三表中可能有多个外键记录,

applicant_particular_id   |   name   |   father_name   |    quota_id
         1                   John        Micheal             18
         2                   khan        ali                 19`

Table2有row1的两个外键

choice_id   |   form_status   |   applicant_particular_id   |    program_id
       1          PENDING               1                       19
       2          RECEIVED              1                       18

在上面的案例中,查询将为table1#row1提供多条记录 为解决重复问题,您必须添加@JohnHC提及的不同