Mysql 在后续行上显示空结果
我在MySQL中有下表Mysql 在后续行上显示空结果,mysql,sql,Mysql,Sql,我在MySQL中有下表 +----+------------+-----------+-------------+-------------------+ | id | product_id | status | transaction | action | +----+------------+-----------+-------------+-------------------+ | 1 | 2 | Pending |
+----+------------+-----------+-------------+-------------------+
| 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我一直试图在应用程序级别实现它,但问题是这个查询只是很多逻辑的一部分。我简化了查询,但本质上它应该是一个组,只在状态达到完成时列出所有事务。这是一个示例,我的数据是唯一的。谢谢此查询不适用于我的案例,因为我在完成后需要前导行,我只是不想显示任何事务