我有两张桌子 Cargo 和 Offer。我只想列出所有货物以及特定用户提供的有效报价的数量。表结构如下:
Cargo - 表
CargoId
CargoTime
..
Offer - 表
OfferId
CargoId
UserId
OfferStatu
..
在此系统中,用户可以为货物提供多个报价,但最新报价将被视为对特定用户有效。因此,如果 OfferStatu 为 1,则这指的是特定用户的先前优惠。
我编写SQL如下假设:
SELECT cargo.CargoId,cargo.CargoTime,COUNT(offer.OfferId)
FROM cargo INNER join offer on offer.CargoId=cargo.CargoId
WHERE cargo.CargoId in
(
select c.CargoId from cargo as c inner join offer as o
on o.CargoId=c.CargoId
WHERE o.UserId=12
)
and offer.OfferStatu<>1
GROUP BY cargo.CargoId
但是这个查询在大约 1 秒内执行,这对我来说太多了。我知道有一种更有效的写作方式,但我现在正在苦苦挣扎。