Mysql 关于sql查询格式
我有一个DB表,其中包含付款(商户、交易、时间戳)。对于教学交易,我们可以有多个商户。现在我想形成一个查询,对于(val1,val2,val3)中的交易,我们将得到进行最新交易的商户。例如:Mysql 关于sql查询格式,mysql,sql,Mysql,Sql,我有一个DB表,其中包含付款(商户、交易、时间戳)。对于教学交易,我们可以有多个商户。现在我想形成一个查询,对于(val1,val2,val3)中的交易,我们将得到进行最新交易的商户。例如: Merchant Transaction Time ---------------------------------- M1 T1 t1 M2 T1 t2 M1 T1
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中选择商户、交易、时间戳“但我希望得到所有组值中最顶端的元组。不是一个组的所有元组。你的意思是,对于所有交易,你只需要一个商户的值?但我希望得到所有组值中最顶端的元组。不是一个组的所有元组。你的意思是,对于所有交易,你只需要一个商户的值?