0
我有一张写有交易数据的表。我需要在加入其他表格时查询上述优惠,但是d.originalorderid
不是唯一条目,我有几个重复条目。我想:在一个特定列中折叠具有相同值的行
- 对于每一个独特的
d.originalorderid
选择一行 - 该行应该是最近的(最大ID)
我怎么会去吗?这是我现在的查询。
SELECT d.id,
d.date,
d.ip, d.panmask,
d.merchantorderid,
d.amount,
d.cardholder,
d.bankhumanname,
d.cardtypeid,
d.bankcountrycode,
d.usercountrycode,
mc.paymentkey as merchantname,
dt.status,
d.merchantcontract,
dt.tag,
d.originalorderid,
ds.refnumber,
ds.dealauthcode,
mc.processingid,
pc.Name as processing,
d.customparams
FROM Deal as d
LEFT JOIN MerchantContract as mc ON mc.Id = d.MerchantContract
LEFT JOIN DealTrace as dt ON d.Id = dt.DealId
AND dt.id = (SELECT MAX(id)
FROM DealTrace WITH (nolock)
WHERE DealId = d.id)
LEFT JOIN DealSummary ds ON d.Id = ds.DealId
AND ds.id = (SELECT MAX(id)
FROM DealSummary WITH (nolock)
WHERE DealId = d.id)
LEFT JOIN Processing pc on mc.ProcessingId = pc.id
WHERE (d.MerchantContract IN ('12'))
ORDER BY ID desc OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY
你会得到SQL Server和MySQL之间的不同答案。 – shawnt00
通用的方式是在交易之后立即抛出另一个连接:内部连接(通过originalorderid从交易组中选择originalorderid,max(id)作为maxorderid)md.originalorderid = d.originalorderid和md.maxid = d .id' – shawnt00
你的问题很混乱。你只提到一个表'交易',但在你的查询中你使用了很多表。 – jonju