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 db を使用)

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

したがって、上記の 2 行目のデータ アナリストを [位置] 列に更新する必要がありますが、エラーが発生します。

これを修正する方法を知っている人はいますか?

前もって感謝します

4

2 に答える 2

-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 に答える
-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 に答える