我在嘗試更新visitors
中的一列。我還在更新查詢的SET
部分使用了sub select語句。mySQL:UPDATE命令中的子SELECT語句
UPDATE
visitors AS v
SET
v.IsFirstVisit = (SELECT COUNT(*) FROM visitors AS v2 WHERE ..... LIMIT 1)
但是,從MySQL返回該錯誤消息
#1093 - You can't specify target table 'v' for update in FROM clause
我不知道爲什麼我不能在內部SELECT語句中訪問「V」的對象。我也不想使用多個語句,因爲這會導致性能問題。
問題:如何在內部select中使用'v'對象?
更新: 這是整個查詢
UPDATE
visitors AS v
SET
IsFirstVisit = (SELECT Count(*) FROM visitors AS v2 WHERE v2.VisitorId < v.VisitorId AND v2.IP = v.IP AND v2.DateTime > v.DateTime [TODO:SUBTRACT30MINUTES] LIMIT 1)
WHERE
VisitorId = "991"
,因爲我有內部的「......」訪問WHERE子句的遊客都對象是行不通的。 – bytecode77 2013-02-20 17:49:01
你能顯示你的整個sql嗎? – 2013-02-20 17:51:39
我將整個查詢添加到問題中。 – bytecode77 2013-02-20 17:59:24