Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在SQL中运行票证计数器_Mysql_Sql - Fatal编程技术网

Mysql 在SQL中运行票证计数器

Mysql 在SQL中运行票证计数器,mysql,sql,Mysql,Sql,我试图将一个运行计数器作为第一列,以便轻松查看分配给代理的票证数量。数字仿真器可以工作,但它不会提高代理的票证号,而是计算票证日期。我目前的代码是: Set @row_num = 0; SELECT @row_num := @row_num + 1 as row_number , s.firstname , s.lastname , t.number , ts.name AS status , o.name, t.created FROM o

我试图将一个运行计数器作为第一列,以便轻松查看分配给代理的票证数量。数字仿真器可以工作,但它不会提高代理的票证号,而是计算票证日期。我目前的代码是:

Set @row_num = 0;
SELECT @row_num := @row_num + 1 as row_number
     , s.firstname
     , s.lastname
     , t.number
     , ts.name AS status
     , o.name, t.created
  FROM ost_ticket t
   JOIN ost_ticket_status ts ON t.status_id = ts.id 
   JOIN ost_staff s ON t.staff_id = s.staff_id
   JOIN ost_user u ON t.user_id = u.id
   JOIN ost_organization o ON u.org_id = o.id
   JOIN (SELECT @row_num:= 0) N
 WHERE s.staff_id IN (27,35,43,45)
   AND t.created >= CURDATE() - INTERVAL 7 DAY
 ORDER BY s.lastname

我怎样才能最好地更改代理的1、2、3,然后为新代理重置?

您需要一个不同的变量来跟踪代理的更改时间

SET @row_num := 0;
SET @agent   :='';

SELECT 
       @row_number := IIF(@agent = s.firstname + s.lastname, 
                         @row_number + 1,  1 
                        ) AS row_number,
       @agent := s.firstname + s.lastname AS agent,
       s.firstname, 
       s.lastname, 
       t.number, 
       ts.name AS status, 
       o.name, 
       t.created
FROM ost_ticket t
   JOIN ost_ticket_status ts ON t.status_id = ts.id 
   JOIN ost_staff s ON t.staff_id = s.staff_id
   JOIN ost_user u ON t.user_id = u.id
   JOIN ost_organization o ON u.org_id = o.id
WHERE s.staff_id IN (27,35,43,45)
AND t.created >= CURDATE() - INTERVAL 7 DAY
ORDER BY s.lastname

为什么要
设置@row\u num=0
JOIN(SELECT@row_num:=0)N
您只需要其中一种,这在我所知道的任何版本的SQL Server中都不是合法的语法,因为1)您不能在SELECT语句中混合变量赋值和数据返回,2)
:=
不是T-SQL中变量赋值的语法。你真正的查询和/或真正的DBMS是什么?当我看到
:=
时,我在想mysql,读了mustaccio后,我的答案是我意识到了sql server标记。对不起,这是mysql。我误点击了标签