Mysql 关于sql查询格式

Mysql 关于sql查询格式,mysql,sql,Mysql,Sql,我有一个DB表,其中包含付款(商户、交易、时间戳)。对于教学交易,我们可以有多个商户。现在我想形成一个查询,对于(val1,val2,val3)中的交易,我们将得到进行最新交易的商户。例如: Merchant Transaction Time ---------------------------------- M1 T1 t1 M2 T1 t2 M1 T1

我有一个DB表,其中包含付款(商户、交易、时间戳)。对于教学交易,我们可以有多个商户。现在我想形成一个查询,对于(val1,val2,val3)中的交易,我们将得到进行最新交易的商户。例如:

Merchant   Transaction    Time
----------------------------------
M1           T1            t1
M2           T1            t2
M1           T1             t3
M3           T2            t4
M4           T2            t5
M5           T3            t6
因此,在transactionid位于(T1,T2.T3)的情况下,我们将得到M1(因为M1在时间T3执行了最新的T1事务),M4,M5
(T1尝试以下操作:

SELECT p.Merchant
FROM Payment p
JOIN 
(SELECT Merchant, Transaction, MAX(Time) as time 
    FROM Payment GROUP BY Merchant, Transaction) t
ON (p.Merchant = t.Merchant AND p.Transaction = t.Transaction AND p.Time = t.time)
试试这个:

SELECT p.Merchant
FROM Payment p
JOIN 
(SELECT Merchant, Transaction, MAX(Time) as time 
    FROM Payment GROUP BY Merchant, Transaction) t
ON (p.Merchant = t.Merchant AND p.Transaction = t.Transaction AND p.Time = t.time)
可以使用Last()函数在分离所有横断面后获取最后一行

您可以使用Last()函数在分离所有横断面后获取最后一行


您要查找的SQL语句如下所示:

SELECT p.Merchant, p.Transaction, p.Time
FROM Payment p
JOIN 
(SELECT Transaction, MAX(Time) as time 
    FROM Payment 
    WHERE Transaction IN('T1', 'T2', 'T3')
    GROUP BY Transaction) t
ON (p.Transaction = t.Transaction AND p.Time = t.time)

根据您的示例检查此结果。

您要查找的SQL语句如下:

SELECT p.Merchant, p.Transaction, p.Time
FROM Payment p
JOIN 
(SELECT Transaction, MAX(Time) as time 
    FROM Payment 
    WHERE Transaction IN('T1', 'T2', 'T3')
    GROUP BY Transaction) t
ON (p.Transaction = t.Transaction AND p.Time = t.time)

根据您的示例检查此结果。

关于<代码>订单依据<代码>子句的情况如何?请参阅此处:尝试使用此查询“按交易顺序按时间戳描述从付款GROUP中选择商户、交易、时间戳”;关于<代码>订单依据子句的情况如何?请参阅此处:尝试使用此查询“按交易顺序按时间戳说明从付款GROUP中选择商户、交易、时间戳“但我希望得到所有组值中最顶端的元组。不是一个组的所有元组。你的意思是,对于所有交易,你只需要一个商户的值?但我希望得到所有组值中最顶端的元组。不是一个组的所有元组。你的意思是,对于所有交易,你只需要一个商户的值?