【问题标题】:Search max and compare with other min in SQL搜索最大值并与 SQL 中的其他最小值进行比较
【发布时间】:2017-06-16 08:32:45
【问题描述】:

好的,我在 Mysql 服务器中有一个包含卖家评论的表格:

SellerReview (ID, User_ID, Time, Review, Seller_id) 

和另一个表,其中Seller_id 与名称用户(ID,名称)相结合。

现在我是否必须进行查询,以便选择元组 (V1, V2),其中 V2 的最大评论严格小于 V1 的最小评论。

我拥有的是:

SELECT U1.name AS V1, U2.naam AS V2
FROM Users AS U1, Users AS U2, SellerReview AS S1, SellerReview AS S2
WHERE U1.id = S1.seller_id   
  AND G2.id = V2.seller_id 
  AND ((SELECT MAX(S.Review) 
        FROM SellerReview AS S 
        WHERE S.Seller_id = U1.id) > (SELECT MIN(S.review) 
                                      FROM SellerReview AS S 
                                      WHERE S.Seller_id = G2.id))

但我没有找到合适的桌子。有谁知道这个问题或任何可以帮助我的人?谢谢!

【问题讨论】:

  • 如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。

标签: mysql max min


【解决方案1】:

要让所有审稿人不重复,请加入U2.id < U1.id。从那里您可以使用having 确保第一个用户的最大评论小于其他用户的最小评论。

SELECT U1.name AS V1, U2.name AS V2
FROM Users AS U1
JOIN SellerReview AS S1 on U1.id = S1.seller_id
JOIN Users AS U2 ON U2.id < U1.id
JOIN SellerReview S2 on U2.id = S2.seller_id
GROUP BY U1.name, U2.name
HAVING MAX(S2.review) < MIN(S1.review)

此查询假定 Users.name 是唯一的。如果不是,您应该改为按Users.id 分组并加入回用户表以获取名称。

【讨论】:

    猜你喜欢
    • 2020-02-19
    • 1970-01-01
    • 2014-05-13
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多