用子查询更新MySQL中的表

时间:2013-12-05 23:36:13

标签: mysql

我想用WHERE子句等于更新我的表以产生我的子查询,如下面的查询中所示。执行查询后的结果应该是名称 Robert 的行具有 1

CREATE TABLE `table1`(
  `name` varchar(30),
  `surname` varchar(30),
  `nextname` varchar(30),
  `value` bit(1)
);



INSERT INTO `table1` 
VALUES
  ('Daniel', 'Hanks', 'Robert', 0),
  ('Robert', 'Pitt', 'Angelina', 0),
  ('Angelina', 'Jolie', 'Monica', 0),
  ('Monica', 'Red', null, 0);



UPDATE `table1` SET `value` = 1 
WHERE `name` IN (SELECT `nextname` FROM `table1`
WHERE `name` = 'Daniel')¨

由于

3 个答案:

答案 0 :(得分:3)

您无法在一个查询中从同一个表中更新和选择。但MySQL确实支持UPDATE和JOIN语法:

UPDATE table1 AS t1
INNER JOIN table1 AS t2 ON t1.name = t2.nextname
SET t1.value = 1 
WHERE t2.name = 'Daniel'

答案 1 :(得分:1)

你也可以用一个丑陋的把戏来做:

UPDATE `table1` SET `value` = 1 
WHERE `name` IN (SELECT `nextname` FROM(SELECT `nextname` FROM `table1`
WHERE `name` = 'Daniel')x)

答案 2 :(得分:0)

在WHERE子句中使用子查询的语法是正确的。不过你想要做什么呢?没有子查询,您可以获得相同的结果。

UPDATE `table1` SET `value` = 1 WHERE `name` = 'Daniel'