2014-02-10 131 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的結果根據你的榜樣。