2014-02-10 135 views
0

我有一个数据库表,其中包含付款(商户,交易,时间戳)。在教学交易中,我们可以有多个商家。现在,我想形成一个查询,其中在(VAL1,VAL2,VAL3)交易,我们会得到谁做最新transaction.eg商家:关于SQL查询信息

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<t2 timestamp)

+0

“ORDER BY”子句怎么样?请看这里:[order by](http://www.w3schools.com/php/php_mysql_order_by.asp) – mhafellner

+0

尝试使用此查询“SELECT Merchant,Transaction,TimeStamp FROM Payment GRUOP BY Transaction ORDER BY TimeStamp DESC”; – PravinS

回答

1
SELECT Merchant FROM DB_TABLE WHERE transaction IN(T1, T2, T3) ORDER 
BY Time DESC LIMIT 1 
1
select * from Payment 
group by transaction 
order by Time desc; 
+0

但我想要得到所有组值的最上面的元组。并非组中的所有元组 – user3265739

+0

您的意思是说,对于所有交易,您只需要一个商家的价值? –

1

试试这个:

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) 
1

你正在寻找的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) 

结帐这个SQLFiddle的结果根据你的榜样。