Mysql使用IN和子查询

时间:2014-12-03 12:52:11

标签: mysql

我目前正在尝试执行以下查询,但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,但似乎无法做到正确。我的问题是,是否有人可以指出我正确的方向。

2 个答案:

答案 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最小的行。