Mysql 如何通过外键编写SQL查询

Mysql 如何通过外键编写SQL查询,mysql,sql,database,oracle,Mysql,Sql,Database,Oracle,我正在努力做到以下几点: 我有两张桌子: 表格员工;列Employee_ID和Employee_Name。员工ID是主键 表Emp_工资;列Employee_Salary,它是链接到Employee_ID的外键 我想为一个ID为40的员工拿到薪水 比如说 Select employee_salary from EMP_Salary where Employee_ID equals 40; 不幸的是,这不起作用;有什么原因吗?使用“外键>主键”关系,这应该可以吗 我无法上班的另一个问题是: S

我正在努力做到以下几点:

我有两张桌子:

表格员工;列Employee_ID和Employee_Name。员工ID是主键

表Emp_工资;列Employee_Salary,它是链接到Employee_ID的外键

我想为一个ID为40的员工拿到薪水

比如说

Select employee_salary from EMP_Salary where Employee_ID equals 40;
不幸的是,这不起作用;有什么原因吗?使用“外键>主键”关系,这应该可以吗

我无法上班的另一个问题是:

 Select employee_Salary from EMP_Salary where Employee_name equals "Dan"

任何见解都值得赞赏。谢谢

因为没有所谓的
等于
。你可以试试这个:

Select employee_salary from EMP_Salary where Employee_ID =40;
Select employee_Salary from EMP_Salary where Employee_name ="Dan"
同样,您可以尝试以下方法:

Select employee_salary from EMP_Salary where Employee_ID =40;
Select employee_Salary from EMP_Salary where Employee_name ="Dan"

你也可以考虑在MySQL中查找,如果你想把这两个查询结合起来,得到结果。 大概是这样的:

select EMPLOYEE_SALARY 
from EMPLOYEE E1 inner join EMP_SALARY E2 on E2.EMPLOYEE_ID = E1.EMPLOYEE_ID
where E1.EMPLOYEE_ID = 40;


使用=而不是等于:

Select employee_salary from EMP_Salary where Employee_ID = 40;
要按姓名获取工资,您需要连接Employee_ID上的两个表,然后将Employee_名称放入WHERE子句:

Select e.employee_salary 
FROM EMP_Salary es 
INNER JOIN employee e ON e.Employee_ID = es.Employee_ID 
WHERE e.Employee_name = 'Dan';

您是否尝试过使用
内部联接

例如:

选择员工ID、员工姓名、员工工资
来自雇员A
内部连接EMP_工资B
在B.ID_EMPLOYEE=A.ID_EMPLOYEE上
其中ID_EMPLOYEE=--numberthere

您需要了解如何定义表。
“Dan”
引用的是列名,而不是字符串值。根据SQL标准,字符串常量必须用单引号括起来。所以它应该是
'Dan'