假设我有下面的表格
学生:
id Name
-------------------
1 john
2 carlos
3 zoya
4 arab
5 amir
和,
电子邮件:
id email student_id
--------------------------
1 a@mail.com 1
2 b@mail.com 2
3 c@mail.com 2
4 d@mail.com 3
5 e@mail.com 4
并使用 sql 查询获取学生姓名和电子邮件,
SELECT student.name, email.eid FROM student
INNER JOIN email
ON student.id = email.student_id
它会给出以下输出,
Name eid
-------------------
john a@mail.com
carlos b@mail.com
carlos c@mail.com
zoya d@mail.com
amir e@mail.com
这里返回了 carlos
的重复条目(实际上不是重复的),
但我只想要像这样的单个学生列表(b@gmail.com
或 c@gmail.com
无关紧要)。
Name eid
-------------------
john a@mail.com
carlos b@mail.com
zoya d@mail.com
amir e@mail.com
我对sql没有多少经验,
我已经使用了 DISTINCT
但它不会工作.. 请帮忙
不是:我将电子邮件存储在不同的表中以备将来需要。
最佳答案
你有问题,因为一些学生有多个电子邮件,而你只查找一个。如果您不关心是哪一个,则使用 MIN()
或 MAX()
:
SELECT s.name, MIN(e.eid)
FROM student s INNER JOIN
email e
ON s.id = e.student_id
GROUP BY s.name;
如果您确实关心哪一个,那么您需要解释在多个之间进行选择的逻辑。
关于Mysql内部加入一对多的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25491672/