0

只是演示。我有两张桌子

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');

感谢。

4

2 回答 2

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'));

请注意,在您的子查询中您不需要 table A

希望这可以帮助。

于 2014-05-04T20:07:23.763 回答
0

对于 mysql

UPDATE a 
JOIN b ON a.id = b.empid 
SET a.name = NUll
WHERE b.datewrk <= '2012-12-14';

您不需要子查询,只需在正确的位置加入表 put set 子句然后 where 子句

小提琴演示

于 2014-05-04T20:08:38.297 回答