【问题标题】:Why is that my MySQL query in Excel using a string as a parameter not working?为什么我在 Excel 中使用字符串作为参数的 MySQL 查询不起作用?
【发布时间】:2020-03-01 11:09:24
【问题描述】:

我正在通过 ODBC 连接在 Excel 中运行 MySQL 查询。

到目前为止,使用参数没有问题,放一个?在我的查询中,并在出现提示时,选择单元格 C2,然后按预期在 A4 中得到结果:

SELECT id_product FROM ps_product WHERE id_product = ? LIMIT 100;

问题是,我希望能够使用单元格值作为字符串作为参数来运行查询,因此可以执行以下操作:

SELECT id_product FROM ps_product WHERE id_product IN (?) LIMIT 100;

当 Excel 提示我使用哪个单元格作为参数时,我选择了我在此处更改的单元格 C2,它仍然只在 A4 中返回第一个 ID,而不是第二个:

知道我应该做些什么来完成这项工作,所以在 A4 A5 中我同时显示了两个产品 ID?

我环顾四周,在 C2 中或直接在查询中使用简单和双引号,玩括号,似乎没有任何效果......

非常感谢!

【问题讨论】:

    标签: mysql excel odbc


    【解决方案1】:

    在这种情况下,您尝试将列表传递到要在 SQL 查询中读取的单元格中。不幸的是,这不可能通过使用 ? 动态选择单元格来实现。在您的 excel 查询中。有几篇关于这个的帖子和可能的解决方法,比如这个涉及 VBA 的帖子。

    Parameterized query from Excel with IN clause

    但是,如果您能够使用 VBA,我建议您创建一个子程序来运行您的查询并动态选择工作表上的范围。例如,

    Sub query()
        Sql = "SELECT id_product FROM ps_product WHERE id_product in '" & Range("C2") & "' AND '" & Range("D4") & "' "
    
        With ThisWorkbook.Connections("Your Connection Name Here").ODBCConnection
            .CommandText = Sql
            .Refresh
        End With
    end sub
    

    当然,如果您有更多的 ID 要输入,这个想法就会扩展。

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多