使用除IN之外的其他内容来查询子查询

时间:2014-05-20 21:31:42

标签: php mysql sql

您好我正在编写一个使用插入和更新的查询,更新有一个子查询,它选择一行或多行。 当我运行查询时,我收到以下错误:"#1235 - 这个版本的MySQL还没有支持' LIMIT& IN / ALL / ANY / SOME子查询"

奇怪的是我使用的是最新版本的mysql,自5.1起就支持此功能。我的查询如下:

INSERT INTO Orders 
    (OrderID, Orderdate, Leverdate, status) 
    VALUES ('', now(), '2014-21-05', 'In      Behandeling');

UPDATE Dozen SET OrderID = LAST_INSERT_ID() 
    WHERE OrderID IN (SELECT DoosID FROM Dozen Limit 0,3);

如何将此查询重写为mysql理解和执行的内容?

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用INNER JOIN

UPDATE Dozen 
INNER JOIN Orders ON DoosID = OrderID
SET Dozen.OrderID = LAST_INSERT_ID()

或者将 IN 更改为 = ,因为您的子查询无论如何都会返回1条记录。

UPDATE Dozen 
SET OrderID = LAST_INSERT_ID()
WHERE OrderID = (SELECT DoosID FROM Dozen LIMIT 1)