php - 对子查询 mysql 使用 IN 之外的其他内容

标签 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 能够理解并执行的内容?

提前致谢!

最佳答案

使用内部连接

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/

相关文章:

javascript - 重定向到不同页面时无法使 JS 脚本工作

php - 在 PHP 中使用服务器代理的 HTTP POST 请求

javascript - 检查是否单击了按钮...不起作用

php - 如何在使用 Carbon 在 Laravel/Eloquent 中使用 'count' 时出现 'where'

mysql - 查找具有最大值的元素。没有出现在 SQL 中

php - 为什么我的 PHP 搜索引擎找不到任何记录?

mysql - 随机考虑他们的发帖用户(mysql)

mysql - 当我导出MySQL数据库时,导出后会删除数据库上的所有内容吗?

sql - 在 postgresql 中选择查询 >= jsonb 列值

iOS - 多对多数据混淆?