C# SQL:使用带限制的内部联接进行更新

C# SQL:使用带限制的内部联接进行更新,c#,mysql,.net,sql,C#,Mysql,.net,Sql,我正在尝试更新数据库中的特定列 此查询可用于: UPDATE table1 A INNER JOIN table2 B ON A.type = B.typeName SET A.closed = 0, A.sample = 0 WHERE A.`status` IN ('Finished', 'Exception', 'Query') AND A.date BETWEEN '2013-01-01' AND '2013-01-31' AND A.code IN ('ex1','ex2','e

我正在尝试更新数据库中的特定列

此查询可用于:

UPDATE table1 A INNER JOIN table2 B 
ON A.type = B.typeName
SET A.closed = 0, A.sample = 0 
WHERE A.`status` IN ('Finished', 'Exception', 'Query') AND A.date BETWEEN '2013-01-01' AND '2013-01-31' 
AND A.code IN ('ex1','ex2','ex3') 
AND A.closed = 0 AND B.order = 'Non-Order' AND A.userName = 'test';
但当我试图设定一个限制时,它说:

Incorrect usage of UPDATE and LIMIT

UPDATE table1 A INNER JOIN table2 B 
ON A.type = B.typeName
SET A.closed = 0, A.sample = 0 
WHERE A.`status` IN ('Finished', 'Exception', 'Query') AND A.date BETWEEN '2013-01-01' AND '2013-01-31' 
AND A.code IN ('ex1','ex2','ex3') 
AND A.closed = 0 AND B.order = 'Non-Order' AND A.userName = 'test' LIMIT 3;
我如何使用限制进行此更新?非常感谢

[EDIT]
我已经做了我想做的,但是速度很慢,花了6秒更新了3行

问题是:

UPDATE table1 SET closed=1, sample=1
 WHERE id IN (
     SELECT id FROM (
         SELECT id FROM table1 A
         INNER JOIN table2 B ON A.type = B.typeName
         WHERE A.`status` IN ('Finished', 'Exception', 'Query') AND A.date BETWEEN '2013-01-01' AND '2013-01-31' 
    AND A.code IN ('ex1','ex2','ex3') 
    AND A.closed = 0 AND B.order = 'Non-Order' AND A.userName = 'test' LIMIT 3
     ) tmp
 );
如何优化此查询再次感谢

你就是不能

根据:

更新1

UPDATE  table1 a
        INNER JOIN
        (
            SELECT  id 
            FROM    table1 A
                    INNER JOIN table2 B 
                        ON A.type = B.typeName
            WHERE   A.status IN ('Finished', 'Exception', 'Query') AND 
                    A.date BETWEEN '2013-01-01' AND '2013-01-31' AND 
                    A.code IN ('ex1','ex2','ex3') AND 
                    A.closed = 0 AND 
                    B.order = 'Non-Order' AND 
                    A.userName = 'test' 
            LIMIT   3
        ) tmp ON a.ID = tmp.ID
SET     a.closed = 1, 
        a.sample = 1
你就是不能

根据:

更新1

UPDATE  table1 a
        INNER JOIN
        (
            SELECT  id 
            FROM    table1 A
                    INNER JOIN table2 B 
                        ON A.type = B.typeName
            WHERE   A.status IN ('Finished', 'Exception', 'Query') AND 
                    A.date BETWEEN '2013-01-01' AND '2013-01-31' AND 
                    A.code IN ('ex1','ex2','ex3') AND 
                    A.closed = 0 AND 
                    B.order = 'Non-Order' AND 
                    A.userName = 'test' 
            LIMIT   3
        ) tmp ON a.ID = tmp.ID
SET     a.closed = 1, 
        a.sample = 1

LIMIT
只能用于
SELECT
语句。如果要限制UPDATE语句受影响的记录数,则必须使用WHERE。

limit
只能用于
SELECT
语句。如果要限制UPDATE语句受影响的记录数,必须使用WHERE。

不是这样<代码>限制仍可用于
更新
语句,但不能用于更新多个表。@JW。任何参考都将不胜感激。我有一个程序,在更新时使用限制,但不使用内部连接哦,好的。还发现了另一个不真实的参考资料<代码>限制仍可用于
更新
语句,但不能用于更新多个表。@JW。任何参考都将不胜感激。我有一个程序,在更新时使用限制,但不使用内部连接哦,好的。还找到了另一个参考资料