繁体   English   中英

用子查询更新MySQL中的表

[英]Update table in MySQL with subquery

我想用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')¨

谢谢

您不能在一个查询中从同一个表中更新和SELECT。 但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'

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM