-1

我有两个不同的表用户和 invoice_order

用户表 -

+-------+-------+-----------+
| pid   | fname |    iid    |                
+=======+=======+===========+
| sk001 | aa    | null      |
+-------+-------+-----------+
| sk002 | ss    | ssk001    |
+-------+-------+-----------+
| sk003 | dd    | sk001     |
+-------+-------+-----------+
| sk004 | ff    | sk002     |
+-------+-------+-----------+
| sk005 | gg    | sk002     |
+-------+-------+-----------+
| sk006 | hh    | sk005     |
+-------+-------+-----------+
| sk007 | jj    | sk006     |
+-------+-------+-----------+
| sk008 | kk    | sk006     |
+-------+-------+-----------+
| sk009 | ll    | sk004     |
+-------+-------+-----------+
| sk010 | mm    | sk005     |
+-------+-------+-----------+
      Here `pid` is personal id of the user and `iid` is the parent_id of the users 
      

invoice_order 表 -

+-------+-------+-----------+--------+
| pid   | fname | iid       |order_to|
+=======+=======+===========+========+
| sk001 | aa    | null      | 100    |
+-------+-------+-----------+--------+
| sk002 | ss    | ssk001    | 400    |
+-------+-------+-----------+--------+
| sk002 | dd    | sk001     | 225    |
+-------+-------+-----------+--------+
| sk004 | ff    | sk002     | 50     |
+-------+-------+-----------+--------+
| sk005 | gg    | sk002     | 59     |
+-------+-------+-----------+--------+
| sk006 | hh    | sk005     | 77     |
+-------+-------+-----------+--------+
| sk007 | jj    | sk006     | 89     |
+-------+-------+-----------+--------+
| sk004 | ff    | sk002     | 87     |
+-------+-------+-----------+--------+
| sk009 | ll    | sk004     | 45     |
+-------+-------+-----------+--------+
| sk010 | mm    | sk005     | 56     |
+-------+-------+-----------+--------+

我正在使用过程team_total_test中使用递归查询来计算单个用户的团队总数

    DELIMITER $$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `team_total_test`(IN `userid` VARCHAR(200))
        NO SQL
    BEGIN
    CREATE TABLE tt_3 (pid VARCHAR(100),iid VARCHAR(100),total INT(250));
    INSERT INTO tt_3  SELECT  pid,
            iid,0
    from    (SELECT pid,iid from users
             order by pid, iid) users,
            (SELECT @pv := userid) initialisation
    where   find_in_set(iid, @pv) > 0
    and     length(@pv := concat(@pv, ',', pid)) order by iid ASC;
       UPDATE tt_3 
       SET total=(SELECT (SUM(order_total_before_tax))/2 FROM invoice_order WHERE tt_3.pid=invoice_order.pid 
         AND MONTH(order_date)=MONTH(NOW()) AND YEAR(order_date)=YEAR(NOW()) );
        SELECT  sum(total) as total_pv
    from    tt_3 ;
       SELECT COUNT(pid) as counting FROM tt_3;
       DROP TABLE tt_3 ;
    END$$
    DELIMITER ;

问题是我在 localhost 中得到了正确的输出,而不是在服务器中 来自 localhost 的 本地主机的输出 输出是在服务器中 的输出输出到服务器

4

1 回答 1

1

有两种可能

  1. 服务器时钟与您的本地时钟不同(因此月份可能是 --- 一个是 10 月,一个是 11 月) - 因为我注意到您的 SQL 包含 MONTH(NOW()) 参数。

  2. 您本地环境的大小写敏感性可能与服务器的大小写敏感性不同(例如,Windows 机器可能将 CASE 和大小写相同,但 linux 机器肯定会将它们视为不同)

于 2020-11-02T13:12:27.480 回答