我想用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')¨
由于
答案 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'