是否可以同时更新多行?
以下查询返回当前部门的信息,员工正在处理.
SELECT a.empID, a.deparmentID
FROM customer a
INNER JOIN (
SELECT f.empID, max(f.myDate) md
FROM customer f
GROUP BY f.empID
) z ON z.empID = a.empID AND z.md = a.myDate
Run Code Online (Sandbox Code Playgroud)
例如,以下是我的表的示例:
empID deparmentID myDate
1 1 2011-01-01
2 1 2011-02-10
3 2 2011-02-19
1 2 2011-03-01
2 3 2011-04-01
3 1 2011-05-10
1 3 2011-06-01
Run Code Online (Sandbox Code Playgroud)
所以上面的查询将返回,
empID departmentID
1 3
2 3
3 1
Run Code Online (Sandbox Code Playgroud)
现在基于这些返回值,我想一次更新我的表.
目前我使用for循环一次更新这些值(性能非常慢),
我的更新查询是:
for row in somerows:
UPDATE facttable SET deparment = row[1] WHERE empID = row[0]
...
Run Code Online (Sandbox Code Playgroud)
但我想知道是否可以在不使用循环的情况下立即更新所有这些值.
编辑:
我有一张桌子.我需要查询同一个表.此表与任何其他表无关.表结构是:
Table Name : Employee
Fields: EmpID varchar
DeptID varchar
myDate date
Run Code Online (Sandbox Code Playgroud)
Bal*_*ash 11
你可以试试这个
UPDATE mytable
SET myfield = CASE other_field
WHEN 1 THEN 'value1'
WHEN 2 THEN 'value2'
WHEN 3 THEN 'value3'
END
WHERE id IN (1,2,3)
Run Code Online (Sandbox Code Playgroud)
这只是一个例子,你可以根据你的情况扩展它.
查看手册以获取更多信息
| 归档时间: |
|
| 查看次数: |
21977 次 |
| 最近记录: |