Navicat用户 - 在页面上的新查询和进程顶部创建变量的任何方法?

时间:2011-03-10 18:35:26

标签: mysql sql navicat

我基本上试图创建一个pHp pdo参数绑定等价而不使用php。

我使用Navicat进行sql查询和构建,因此我可以做一些比phpmyadmin更有趣的事情。

我有一个特别的查询,它接受一个日期值并将其应用于(字面上)14 if,where和group by语句。我想基本上在页面顶部创建一个变量,比如说:

:date

然后在查询中,应用变量say:

WHERE date_inserted > :date

我相信这可以在存储过程中完成,但我想保留为查询(在查询编辑器中)

编辑 - 示例:

在php中,您可以使用pdo创建一个准备好的SQL查询,如下所示:

$stmt = $db->prepare("SELECT * FROM tablename WHERE field1 = :field1 AND datefield <= :date1 AND datefield2 >= :date1 AND datefield3 > :date1");

$stmt->bindParam(':field1', $somevariable);
$stmt->bindParam(':date1', $somedate);
$stmt->execute();

我想用sql完全相同的东西(使用navicat)

3 个答案:

答案 0 :(得分:2)

在进一步研究我自己的问题之后,发现你可以使用:

在sql调用中设置变量
  

SET @variablename = [value]

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

答案 1 :(得分:1)

这是另一个答案,因为您不想使用连接

SET @@session.var = 'some_value'; 
select * from table where field = @@session.var

尚未测试,但我从这里读到

http://forums.mysql.com/read.php?61,127011,127796#msg-127796

我认为变量将被保留,直到连接关闭并重新创建。

编辑: OP找到了答案的其余部分。按要求编辑。

您可以使用以下方法在SQL调用中设置变量:

SET @variablename = [value]

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

答案 2 :(得分:0)

你能提供整个查询吗?我认为如果派生表是SELECT语句,它可能会起作用。

一个简单的例子就是从这个

开始
select * from table where field = 'somedate'

将其更改为此

select table.* from (select 'somedate' q)q, table where field = q.q

因此,q是您的单行和单个字段的派生表,而q.q是您的字段。

如果没有看到更多声明,我真的不知道更有帮助。

顺便说一句,我对PHP,phpmyadmin,Navicat或存储过程一无所知。只有自学成才的MySQL。