2

我有两个表“列表”和“出价”。我有一个查询将返回特定用户出价的所有列表,其中 end_date 已过去。不过,我需要做的是进一步限制结果,以仅查找用户出价并且是最后出价者的列表。这是我到目前为止的查询...

SELECT listings.end_date, listings.user_id, listings.title, listings.auc_fp, listings.id, listings.auc_image1 
FROM listings INNER JOIN bids ON listings.id = bids.listing_id 
WHERE bids.user_id=$userid 
AND listings.end_date < NOW() 
ORDER BY list_ts DESC"

我不擅长子查询,我假设我需要在这里找到“bids”表中的所有用户出价,其中bid_ts(出价时间戳)是出价中相应listing_id的最新时间戳桌子。我的bids 表中的列是:listing_id、user_id、bid、bid_ts。

+------------+---------+------+---------------------+
| listing_id | user_id | bids | bid_ts              |
+------------+---------+------+---------------------+
|  1         | 10      | 100  | 2012-11-16 00:54:03 |
|  1         | 11      | 101  | 2012-11-16 00:54:04 |
|  2         | 10      | 33   | 2012-11-16 00:54:03 | 
|  2         | 11      | 34   | 2012-11-16 00:54:04 |
|  2         | 12      | 35   | 2012-11-16 00:54:05 |
+------------+---------+------+---------------------+

谢谢你的帮助

4

1 回答 1

4
SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT listing_ID, user_ID, MAX(bid_ts) maxDate
            FROM tableName
            GROUP BY listing_ID, user_ID
        ) b ON  a.listing_ID = b.listing_ID AND
                a.user_ID = b.user_ID AND
                a.bid_ts = b.maxDate
于 2012-12-27T05:55:40.527 回答