首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL连接两个表以查找除具有最大值的行之外的所有行

问MySQL连接两个表以查找除具有最大值的行之外的所有行
EN

Stack Overflow用户
提问于 2012-12-30 05:22:43
回答 1查看 1K关注 0票数 1

我正在尝试编写一个查询,该查询将查找组中除具有最大值的行之外的所有行。到目前为止,我有一个查找具有最大值的行的查询,但现在我需要查找所有其余的行。下面是一个包含两个数据库和示例数据的SQLFiddle。我还有一个查找最大行数的查询。http://sqlfiddle.com/#!2/514d2/33

对于那些不想使用SQLFiddle的人...表名: listings表名: bids

代码语言:javascript
复制
SELECT listings.end_date, listings.user_id, listings.title, 
  listings.auc_fp, listings.id, listings.auc_image1
FROM listings 
JOIN bids b1 
ON b1.listing_id=listings.id 
LEFT JOIN bids b2 
ON b2.listing_id=listings.id AND b1.bid < b2.bid
WHERE b1.user_id = 1
AND b2.bid IS NULL
AND listings.end_date > NOW()
ORDER BY listings.list_ts DESC

上面是查找最大行数的查询。我正在尝试将listings表与listings.id=bids.listing_id上的bids表结合起来。然后,我需要找到用户($user或用户"1")竞标该列表的所有行。然后,我需要排除用户拥有最大出价的列表(这就是上面的查询所做的)。

我最初认为我可以使用上面的查询作为子查询,以排除用户是最大投标人的列表。但我不确定这是否是最好的方法,而且我不擅长使用子查询。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-30 05:46:02

请注意,答案根据下面的评论修改了几次。

代码语言:javascript
复制
SELECT
    lst.end_date,
    lst.title,
    lst.auc_fp,
    lst.id as listing_id,
    lst.auc_image1,
    b.user_id as bid_user_id,
    b.bid as bid_amount,
    maxbids.maxbid as maxbid_for_listing
FROM listings lst
INNER JOIN
(
    SELECT listing_id, MAX(bid) maxbid
    FROM bids b
    GROUP BY listing_id
) maxbids ON lst.id = maxbids.listing_id
INNER JOIN bids maxusers ON maxusers.bid = maxbids.maxbid AND maxusers.listing_id = maxbids.listing_id
INNER JOIN bids b ON
    maxbids.listing_id = b.listing_Id AND
    b.bid < maxbids.maxbid AND
    b.user_id <> maxusers.user_id
WHERE lst.end_date > NOW()
ORDER BY lst.list_ts DESC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14086041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档