PHP - 在SQL查询中传递mysql @variable

时间:2016-08-03 08:21:20

标签: php mysql

我有以下SQL,我想通过PHP在MySQL DB上运行。

错误

syntax error  check the
 manual that corresponds to your MySQL server version for the right syntax to use near '@rn := if(@prevDate=eve_date 

SQL

SELECT eve_date, 
       cust_name, 
       item_id, 
       Sum(item_bundle_size) sumsize 
FROM   (SELECT eve_date, 
               cust_name, 
               item_id, 
               item_bundle_size, 
               @rn := IF(@prevdate = eve_date, IF (@previtem = item_id, @rn, 
                      IF (@previtem := item_id, @rn + 1 
                      , @rn + 
                      1)), 
                      IF 
                             (@prevdate := eve_date, 
                      IF (@previtem := item_id, 1, 1), 1 
                      ) 
                      ) rn 
        FROM   cust_sales_hist 
               CROSS JOIN (SELECT @rn := 0, 
                                  @prevdate := NULL, 
                                  @previtem := NULL) t 
        WHERE  cust_name = 'Cust1' 
               AND eve_date BETWEEN '2015-08-01' AND '2015-08-05' 
        ORDER  BY eve_date, 
                  item_bundle_size DESC) t 
WHERE  rn <= 4 
GROUP  BY eve_date, 
          cust_name, 
          item_id 
ORDER  BY eve_date, 
          cust_name, 
          sumsize DESC 

我向上查了一些例子,建议将查询分成几个部分。但是,在我的情况下,由于输出的要求,我似乎必须将其作为一个运行。如果需要,此查询的SQL小提琴 - http://sqlfiddle.com/#!9/3a5d08/5

我真的很感谢能让我搬到这里的任何帮助。

1 个答案:

答案 0 :(得分:0)

正如上面Barmer所建议的那样,代码有一个特殊的字符,这个字符不可见,它将查询分成两部分和一部分。因此问题。解决了这个问题。感谢Barmer