我正在将一些旧的 PHP 页面转换为使用 PDO。
下面是两个简化的查询(不是我的实际查询),以帮助理解我遇到的问题......
SELECT afield INTO #temptable FROM atable WHERE anotherfield = 'somevalue';
SELECT afield,anotherfield,onemorefield FROM atable
WHERE afield NOT IN (SELECT * FROM #temptable);
上面的查询抛出了标题中描述的错误(更完整的是它抛出了“致命错误:未捕获的异常 'PDOException' 并带有消息'SQLSTATE [IMSSP]:查询的活动结果不包含任何字段。'”)
如果我像这样更改查询...
with (SELECT afield INTO #temptable FROM atable
WHERE anotherfield = 'somevalue') AS temptable;
SELECT afield,anotherfield,onemorefield FROM atable
where afield NOT IN (SELECT * FROM temptable);
这似乎解决了这个错误,但是这个版本的查询效率非常低,因为它似乎为另一个查询中的每个字段比较运行临时查询。
有没有办法让第一个表单(它创建一个临时表)与 PDO 一起工作?
它在使用 mssql 的旧页面上运行良好。
编辑:我知道我可以通过创建一个真实表以“混乱”的方式执行此操作,在 php 中运行它,然后运行第二个查询(在单独的 php 调用中),然后运行第三个查询以删除第一个表。但我宁愿不必诉诸于此!:)