Mysql 在后续行上显示空结果

Mysql 在后续行上显示空结果,mysql,sql,Mysql,Sql,我在MySQL中有下表 +----+------------+-----------+-------------+-------------------+ | id | product_id | status | transaction | action | +----+------------+-----------+-------------+-------------------+ | 1 | 2 | Pending |

我在MySQL中有下表

+----+------------+-----------+-------------+-------------------+
| id | product_id |  status   | transaction |      action       |
+----+------------+-----------+-------------+-------------------+
|  1 |          2 | Pending   |             | sent              |
|  2 |          2 | Complete  |           1 | received          |
|  2 |          2 | Complete  |           1 | some other action |
+----+------------+-----------+-------------+-------------------+
我只想在完成状态后显示一次事务。 因此,结果集将是

+----+------------+-----------+-------------+-------------------+
| id | product_id |  status   | transaction |      action       |
+----+------------+-----------+-------------+-------------------+
|  1 |          2 | Pending   |             | sent              |
|  2 |          2 | Complete  |           1 | received          |
|  2 |          2 | Complete  |             | some other action |
+----+------------+-----------+-------------+-------------------+

我不知道你为什么要两次插入相同的结果,这是一个糟糕的练习

试试看

     SELECT  
         id, product_id , status, transaction from Table1
     group by id ,product_id,status

在MySQL中实现这一点的最简单方法是使用变量。查询如下所示:

select id, product_id, status,
       if(id <> @previd and @prevstatus <> status and status = 'Complete', transaction, NULL) as transaction,
       action,
       @previd := id, @prevstatus := status
from table t cross join
     (select @previd := -1, @prevstatus := '') const
order by id, product_id, status;

一个问题是,该表没有用于稳定排序的列,因此这是一个最佳猜测。

是否要更新statment?结果集是否需要采用这种精确格式?使用如下查询如何:按状态描述从myTable GROUP中选择id、product_id、Status、transaction、COUNT*作为行?谢谢@RocketHazmat我需要下一个完整状态的信息,因为它有不同的创建时间。。我想知道是否有一种方法可以只显示一次完整状态的事务,并在之后的每一行上显示nullthat@SamD:可能有,但对于SQL查询来说,听起来有点过于复杂。您可以将前一行的状态保存在SQL变量中。你是如何使用这些数据的,也许你可以在该语言的每个新状态下忽略它?@RocketHazmat我一直试图在应用程序级别实现它,但问题是这个查询只是很多逻辑的一部分。我简化了查询,但本质上它应该是一个组,只在状态达到完成时列出所有事务。这是一个示例,我的数据是唯一的。谢谢此查询不适用于我的案例,因为我在完成后需要前导行,我只是不想显示任何事务