只是演示。我有两张桌子
Table a (id, name)
--id---name----
1 John
2 Jack
3 Maria
4 Bill
Table b (id, empid, datewrk)
--id---empid----datewrk----
1 1 2012-12-12
2 2 2012-12-14
3 3 2012-12-16
4 4 2012-12-17
我想在表a中更新所有name = null,表b中的日期< ='2012-12-14',结果是
--id---name--
1 NULL
2 NULL
我尝试过代码但没有工作(仅适用于SELECT语句)。我在MySql Workbench和SQL Server 2012中尝试
UPDATE a
SET name = NUll
WHERE id IN (SELECT a.id FROM a
JOIN b ON a.id = b.empid
WHERE b.datewrk <= '2012-12-14');
感谢。
答案 0 :(得分:0)
您的更新声明应该有效,但为了进行比较,您必须将'2012-12-14'
转换为日期。
UPDATE a
SET name = NULL
WHERE id IN (
SELECT empid FROM b
WHERE datewrk <= STR_TO_DATE('2012-12-14', '%Y-%m-%d'));
请注意,在子查询中,您不需要表A
。
希望这有帮助。
答案 1 :(得分:0)
对于mysql
UPDATE a
JOIN b ON a.id = b.empid
SET a.name = NUll
WHERE b.datewrk <= '2012-12-14';
您不需要子查询只需将表put set子句加入正确的where where子句