私は自分の仕事で問題が発生しました。私は間違ってレコードをたくさん更新しました。だから、それを元に戻すために、私はthis questionに続き、修正日の降順に従ってテーブルのすべてのレコードを注文し、2番目の最後のレコードを得ました。これは私の誤った更新前の値を示しました。だから私は、レコードを更新するには、このような何かを書いた:2つのWHERE句に値の範囲を入れてください
update table1 set col1 = (select top 1 col1 from
(select top 2 * from table1 where col2 = val1 order by dateofmodification desc) X
order by dateofmodification
where col2 = val1
それはうまく動作しますが、ここで問題です。私は、更新するレコードを一揃い、つまり、col2
が一致する値の全体、つまりval1, val2, val3, .....
を持っています。どのようにサーバーをSQLになるので
update table1 set col1 = (select top 1 col1 from
(select top 2 * from table1 where col2 in (val1, val2, val3) order by dateofmodification desc) X
order by dateofmodification
where col2 in (val1,val2, val3)
VAL1は2つのWHERE
句でVAL1に一致させる知っている:私はので、そうのような2つのWHERE
句の値の範囲内に置くことができませんか?
ここで何をすればいいですか?
編集:ここでは、サンプル表
Employees
name | emp_id | address | department | dateofmodification
私がミスを犯し、従業員レコードの束を更新し、いくつかのランダムなジャンクに自分の部門を台無しです。
私はこのクエリ
update Employees set department = (select top 1 department from
(select top 2 * from Employees where address = 'Chicago' order by dateofmodification desc) X
where address = 'Chicago'
を実行するのであれば、それはうまく動作しますが、都市だけでなく、シカゴの全体の束があります。私はそれらの値を一つずつ差し込みたくない。
SOユーザーに不必要な頭痛を与えないようにするには、問題を示すサンプルテーブルを表示できますか? –
サンプルテーブルを追加しました。希望が役立ちます。 –