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。任何参考都将不胜感激。我有一个程序,在更新时使用限制,但不使用内部连接哦,好的。还找到了另一个参考资料