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

我本质上是试图创建一个pHp pdo参数绑定等价而不使用php。 我使用Navicat进行sql查询和构建,因此我可以做一些比phpmyadmin更有趣的事情。 我有一个特别的查询,它接受一个日期值并将其应用于(字面上)14 if,where和group by语句。我想基本上在页面顶部创建一个变量,比如说:
:date
然后在查询中,应用变量说:
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)     
已邀请:
这是另一个答案,因为您不想使用join
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     
在进一步研究我自己的问题之后,发现你可以使用以下方法在sql调用中设置变量:   SET @variablename = [value] http://dev.mysql.com/doc/refman/5.0/en/user-variables.html     
你能提供整个查询吗?我认为如果派生表是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。     

要回复问题请先登录注册