“活动结果不包含字段”使用带有 MS SQL 的 PDO
2022-08-30 19:21:58
我正在转换一些旧的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调用中),然后运行第三个查询来删除第一个表,从而以“混乱”的方式做到这一点。但我宁愿不必诉诸于此!:)