Small Part of the Instructor Table
--------------------------------------------------
Instructor_ID Salutation First     Last     Street Address  Zip
101           Mr         Fernand   Hanks    100 East 87th   10015
102           Mr         Tom       Wojick   518 West 120th  10025
103           Ms         Nina      Schorin  210 West 101st  10025
104           Mr         Gary      Pertez   34 Sixth Ave    10035
105           Ms         Anita     Morris   34 Maiden Lane  10015
106           Rev        Todd      Smythe   210 West 101st  10025
107           Dr         Marilyn   Frantzen 254 Bleeker     10005
108           Mr         Charles   Lowry    518 West 120th  10025
109           Hon        Rick      Chow     56 10th Avenue  10015
110           Ms         Irene     Willig   415 West 101st  (null)
------------------------------------------------------------------
Small Part of the Student Table

152     Mr.    Thomas       Edwards     501 W. Elm                      07036
157     Ms.    Shirley      Jameson     101 Daniel St.                  07008
158     Mr.    Roy          Limate      5 Horizon Rd.                   07024
159     Mr.    Thomas       Edwards     45 Maplewood Ave.               07040
160     Mr.    John T.      Beitler     100 Plaza Dr, ITT CSI Emp. Dpt  07096
168     Ms.    Sally        Naso        812 79th St.                    07047
182     Mr.    Jeffrey      Delbrun     PO Box 1091                     07024
185     Mr.    Dennis       Mehta       371 Monmouth St.                07302
186     Ms.    Christine    Sheppard    16 Seymour St.                  07042
187     Mr.    O.           Garnes      125 Great Hills Rd              07078


使用UNION set运算符编写一个set操作,以在INSTRUCTOR和STUDENT表中列出所有重复的邮政编码。

这是我想出的,不确定是否正确。

select zip, count(*) from instructor
group by zip
having count(*) > 1
union
select zip, count(*) from student
group by zip
having count(*)>1


请帮忙!!

OUTPUT:
Zip     Count(*)
06820   3
06830   3
06880   2
06903   2
07003   2
07010   6
07011   2
07012   2
07016   2
07024   9

最佳答案

您的解决方案基本上是这样做的:


在INSTRUCTOR中识别骗子
识别学生中的骗子
同时显示它们(即UNION或UNION ALL)


我想你做对了。

但是,如果我理解如下问题,则说明将有所不同:


建立来自INSTRUCTOR和STUDENT的所有ZIP的并集
现在确定骗子


例如,假设一个INSTRUCTOR的ZIP = 99999,而一个学生的ZIP = 99999,那么您的解决方案就不会将它们显示为重复。
有了对问题的后一种理解,这很容易成为骗子。

对于后一种情况,该语句将/可能是:

select x.zip from
    (select zip from instructor
     union all
     select zip from student) x
group by x.zip
having count(*) > 1;

关于mysql - SQL语句仅显示来自两个不同表的重复邮政编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36094991/

10-09 13:08