我目前正在尝试执行以下查询,但mySQL不支持它。
UPDATE `TABLE 1` SET `batchid`=1 WHERE `id`
IN (SELECT `id` FROM `TABLE 1`
WHERE `postcode` BETWEEN "3699*"
AND "3900*" AND `telstriplengte`='10' LIMIT 1);
我一直在玩JOINS,但似乎无法做到正确。我的问题是,是否有人可以指出我正确的方向。
答案 0 :(得分:3)
你不能直接在一个查询中直接传递吗?
UPDATE `TABLE 1` SET `batchid`=1
WHERE `postcode` BETWEEN "36990" AND "39009" AND `telstriplengte`='10' LIMIT 1;
答案 1 :(得分:2)
这是您的查询:
UPDATE `TABLE 1`
SET `batchid`=1
WHERE `id` IN (SELECT `id`
FROM `TABLE 1`
WHERE `postcode` BETWEEN "3699*" AND "3900*" AND
`telstriplengte`='10'
LIMIT 1);
此查询的具体问题是您指的是子查询中正在更新的表。在这种情况下 - 假设id
我是唯一的,你根本不需要子查询:
UPDATE `TABLE 1`
SET `batchid`=1
WHERE `postcode` BETWEEN "3699*" AND "3900*"
AND `telstriplengte` = '10'
LIMIT 1;
通常在使用LIMIT
时,您还有一个ORDER BY
。不是必需的,但任何行都可以更新以符合条件,我猜你想要一个id最小的行。