在sql中使用外部键进行查询

时间:2014-06-04 14:45:07

标签: mysql sql mysql-workbench

我有2张桌子(员工和头衔)。标题有一个名为“title”的列,其中包含字符串值。标题还有一个名为“emp_no”的列,它是表“雇员”的外部密钥(不确定我的条款是否正确)。我想选择只有一个标题的所有标题的emp_no。使用emp_no作为外键,我希望使用表employees的名字和姓氏。我用过这个

select e.emp_no, e.first_name, e.last_name
from employees e, titles t
where e.emp_no = t.emp_no
group by t.title
having count(t.title)=1;

但未给出正确的结果。我对sql完全不熟悉,所以如果我的问题看起来很明显,请耐心等待。我使用mysql workbench。谢谢。

2 个答案:

答案 0 :(得分:4)

你应该按emp_no分组,而不是t.title。

顺便说一下,使用连接语法。

select e.emp_no, e.first_name, e.last_name
from employees e
join title t on t.emp_no = e.emp_no
group by e.emp_no, e.first_name, e.last_name
having count(*)=1;

答案 1 :(得分:0)

欢迎使用SQL!如果我正确理解你的问题,员工可以拥有多个头衔,是吗?如果是这样,这就是您想要的语法:

SELECT t.emp_no, e.first_name, e.last_name
FROM title t
INNER JOIN employee e on t.emp_no = e.emp_no
GROUP BY t.emp_no
HAVING count(t.title)=1;

这是一个指向jsfiddle的链接,向您展示我的所作所为。 JSFiddle