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/