【问题标题】:MySQL SET with PDO Connection带有 PDO 连接的 MySQL SET
【发布时间】:2023-03-24 02:06:01
【问题描述】:

我正在尝试执行一个很长的 SQL 语句,该语句使用多个用户选项选择“前 N”行。我不想在这里发布整个声明,因为它很长,但我正在使用这篇文章中描述的 MySQL 变量:MySql Query: Select top 3 rows from table for each category

该语句在 MySQL 命令行上运行时运行良好,但我遇到的问题是整个查询必须通过 PDO 连接运行,我想知道是否有人可以确认我无法设置值'on-the-飞”,如下图所示。这是 PDO 限制吗?我只是浪费了几个小时吗?非常感谢您的帮助...

SELECT outerseasons.* FROM (SELECT seasons.CountryName, seasons.idCountry, '' as     idCountryGroup, '' as CGName, seasons.DIValue_WorkingEntered, 
      seasons.SNName, seasons.idSeason, seasons.idParameter, seasons.PMName,
      CASE 
        WHEN @idSeason != seasons.idSeason OR @idParameter != seasons.idParameter
        THEN @rownum := 1
        ELSE @rownum := @rownum + 1
      END AS rank,
      @idSeason := seasons.idSeason as var_season,
      @idParameter := seasons.idParameter as var_parameter
      FROM ( SELECT ...

【问题讨论】:

  • 你使用 PDO 准备好的语句吗?
  • 不,它是用原生 MySQL 编写的。不是我的错,也没有办法解决它...... :(

标签: mysql pdo


【解决方案1】:

PDO 与 SQL 语法有关。它可以执行您编写的任何 SQL 查询。
唯一的麻烦可能是由查询集引起的。可以通过将这些集合拆分为单独的查询并逐个运行它们来轻松解决。

其他任何问题都可能仅由 SQL 语法错误引起。
只需验证您的 SQL 语法和watch PDO errors

【讨论】:

  • 感谢您的反馈,非常感谢。您能否详细说明“通过将这些集合拆分为单独的查询并逐个运行它们可以轻松解决”?您的意思是将每个 SELECT 作为单独的查询运行吗?以及如何再次组合它们(如果有意义的话)。原谅我的无知。
  • 我的意思是将每个查询取消为单独的查询。如果您的 SQL 中没有 ; 符号,请不要打扰 - 事实并非如此。
猜你喜欢
  • 2012-12-12
  • 2013-02-18
  • 2018-08-20
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
  • 2018-04-04
  • 2012-02-29
  • 1970-01-01
相关资源
最近更新 更多