0

我本质上是在尝试创建一个等效的 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)

4

3 回答 3

2

这是另一个答案,因为您不想使用 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

于 2011-03-10T18:48:07.780 回答
2

在进一步研究我自己的问题后,发现您可以使用以下方法在 sql 调用中设置变量:

SET @variablename = [值]

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

于 2011-03-10T19:47:35.817 回答
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。

于 2011-03-10T18:41:04.117 回答