假设我在桌子下面
学生:
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
,但它无效......请帮忙
不是:我将电子邮件存储在不同的表中,以备将来需要时使用。
答案 0 :(得分:0)
您遇到了问题,因为有些学生有多封电子邮件,而您只需要一封电子邮件。如果您不关心哪一个,请使用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;
如果你关心哪一个,那么你需要解释多次选择的逻辑。
答案 1 :(得分:-2)
这应该有效
SELECT distinct student.name, email.eid FROM student
INNER JOIN email
ON student.id = email.student_id
为什么您将电子邮件存储在不同的表中然后加入它们,您可以将它们存储在学生表中,这样可以使设计更简单,查询更容易。