Excel:使用单元格值作为SQL查询的参数

时间:2009-08-16 23:58:35

标签: excel odbc

我正在使用MS Excel通过ODBC从MySQL数据库中获取数据 我使用SQL查询成功获取数据。但现在我想要查询参数化 所以我想知道是否可以使用单元格值(电子表格单元格)作为此类查询的参数 例如,对于此查询:

select name from user where id=1

我想从电子表格中的单元格D4中获取id值。

这是参数化查询的正确方法吗?我该怎么办?

感谢。

4 个答案:

答案 0 :(得分:32)

我和你有同样的问题,Noboby可以理解我,但我以这种方式解决了它。

SELECT NAME, TELEFONE, DATA
FROM   [sheet1$a1:q633]
WHERE  NAME IN (SELECT * FROM  [sheet2$a1:a2])

您需要在其他工作表中插入参数,SQL会将该信息视为如 数据库,然后您可以选择信息并将它们比较为您喜欢的参数。

答案 1 :(得分:11)

如果您使用的是microsoft查询,可以添加“?”你的查询...

  

从用户中选择名称,其中id =?

当你回到excel时会弹出一个小窗口询问单元格/数据/等。

在弹出窗口中,您还可以选择“始终将此单元格用作参数”,无需在每次刷新数据时定义该单元格。这是最简单的选择。

答案 2 :(得分:4)

queryString = "SELECT name FROM user WHERE id=" & Worksheets("Sheet1").Range("D4").Value

答案 3 :(得分:1)

SQL有点像MS SQL的语法。

SELECT * FROM [table$] WHERE *;

重要的是,表名以$符号结尾,整个内容放在括号中。作为条件,您可以使用任何值,但到目前为止,Excel不允许我使用我称之为“SQL Apostrophes”('),因此建议在一个单词中使用列标题。

如果您在名为“Users”的表中列出了用户,并且该ID位于标题为“id”的列中,而名称位于标题为“Name”的列中,则您的查询将如下所示:

SELECT Name FROM [Users$] WHERE id = 1;

希望这有帮助。