嗨,我正在编写一个使用插入和更新的查询,更新有一个选择一行或多行的子查询。 当我运行查询时,出现以下错误:“#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 能够理解并执行的内容?
提前致谢!
最佳答案
使用内部连接
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)
关于php - 对子查询 mysql 使用 IN 之外的其他内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23770330/