2008-11-25 62 views
1

我主要使用MySQL GUI工具。这使我可以在表格中轻松查看结果以及快速编辑和书签频繁运行的查询。这适合我的需求比命令行要好得多。在MySQL中执行交互式查询(主要来自GUI)

我记得在多年前我曾经在Oracle数据库上做过这件事时,我可以在查询本身中放入变量,以便在运行查询时提示变量。

例如

select email from users where login = [VAR] 

,并在运行系统提示您输入VAR的查询,您可以在john_smith14类型,并且执行查询。这对于你经常运行的adhoc查询非常有用。

是的我知道使用shell脚本和命令行,这可以更容易地完成,但除此之外的几个原因,shell脚本不是一个很好的解决方案。

回答

0

我不确定是否有办法让GUI工具提示您输入值,但是您当然可以在MySQL中使用变量。

SET @myVar='john_smith14'; 
SELECT email FROM users WHERE login = @myVar; 

这可能甚至更适合你,因为你不必每次都输入变量值..?

+0

IIRC,这是不是为MySQL GUI工具一个很好的解决方案,因为它复位每一笔交易和用户变量都将丢失后的连接。 – 2008-11-25 12:43:06

+0

真的吗?坚果。必须有办法做到这一点,对吧? – nickf 2008-11-25 12:44:34

+0

好没关系我只是尝试它,它工作正常。我必须从旧版本的MySQL查询浏览器来记住行为。 – 2008-11-25 12:47:02

1

好的,不同的解决方案,因为它看起来比尔是正确的(阅读我的其他答案的意见)。

在右下角的参数标签中,您可以右键单击“Local Params”文件夹并添加一个新参数。给它一个名字,例如:“myTest”。最初它被赋予一个NULL值。双击NULL并输入一个新值。

现在您可以在您的查询是这样的:

SELECT email FROM users WHERE login = :myTest;

为了使会话之间的这种坚持(开闭查询浏览器),只是让一个全球性的参数,而不是局部的参数。即使您重新启动MySQL服务器,这也可以工作。

0

在这种情况下使用准备好的语句可能对您有用。

 
PREPARE query1 FROM select email from users where login = ? 

然后用你的变量执行:

 
SET @a = 'john'; 
EXECUTE query1 USING @a; 

本声明将你的整个会话期间存在,并且跌落时断开连接。

这可能看似不起眼的开销,但一遍又一遍使用相同的查询时,略有不同的值是非常有用的。

http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html