0

因此,我正在尝试更新合同开始日期为最新日期和相关员工 ID 的合同表。合同表存储有关员工的所有过去信息。

例如。

contract_tbl
+------------+------------+--------------------+-----------------+---------------+
|Contractid  |EmployeeId  |ContractStartDate   |ContractEndDate  | Position      |
+------------+------------+--------------------+-----------------+---------------+
|   1        |   1        |  2012-12-13        |  2013-12-12     |  Data Entry   |
+------------+------------+--------------------+-----------------+---------------+
|   2        |   1        |  2014-01-26        |  2015-01-25     |  Data Entry   |
+------------+------------+--------------------+-----------------+---------------+
|   3        |   2        |  2014-01-26        |  2015-01-25     |  Data Entry   |
+------------+------------+--------------------+-----------------+---------------+

这是我拥有的 SQL,但它不起作用。(使用 mysql 数据库)

UPDATE contract_tbl 
SET Position='Data Analyst' 
WHERE EmployeeId = 1 And ContractStartDate= (
  select max(ContractStartDate 
  FROM contract_tbl))

因此,它应该使用 Position 列中的 Data Analyst 更新上面显示的第二行,但出现错误。

有人知道如何解决这个问题吗?

提前致谢

4

2 回答 2

-1

这也可以:

UPDATE contract_tbl a
JOIN (
  SELECT MAX(ContractStartDate) m
  FROM contract_tbl
  WHERE EmployeeId = 1) b ON a.ContractStartDate = b.m AND a.EmployeeId = 1
SET a.Position='Data Analyst';
于 2014-06-07T01:53:11.653 回答
-1

可能这就是你想要的:

UPDATE contract_tbl c1
SET Position='Data Analyst' 
WHERE EmployeeId = 1 And ContractStartDate= (
  SELECT max(ContractStartDate)
  FROM contract_tbl c2
  WHERE c2.EmployeeId = c1.EmployeeId
)
于 2014-06-07T01:41:46.903 回答