mysql - 显示最大值

标签 mysql sql

我想显示特定用户拥有的最大保证。例如用户购买了 3 件有 1、2、5 年保修的商品。所以我想展示该产品的 5 年保修和名称。 我做了子查询,以防很少有产品具有相同的保证。

SELECT t.`id-user`, name, guarantee FROM transactions t 
JOIN user u ON `t`.`id-user` = `u`.`id-user`
JOIN products p ON `p`.`id-product = `t`.`id-product`
WHERE guarantee = (SELECT MAX(p2.guarantee) 
                   FROM products p2
                   WHERE `p2`.`id-product` = `p`.`id-product`)

此查询显示所有产品及其保证。

最佳答案

我认为最简单的方法是获取与最大值/最小值相关的值的 substring_index()/group_concat() 方法:

SELECT t.iduser, u.name,
       MAX(p.guarantee) as guarantee,
       SUBSTRING_INDEX(GROUP_CONCAT(p.name ORDER BY p.guarantee DESC), ',', 1)
FROM transactions t JOIN 
     user u 
     ON t.iduser = u.iduser JOIN
     products p
     ON p.idproduct = t.idproduct
GROUP BY t.iduser, u.name;

您也可以使用您的方法,但相关子查询很棘手:

SELECT t.iduser, u.name, p.guarantee, p.name
FROM transactions t JOIN 
     user u 
     ON t.iduser = u.iduser JOIN
     products p
     ON p.idproduct = t.idproduct
WHERE p.guarantee = (SELECT MAX(p2.guarantee)
                     FROM transactions t2 JOIN
                          products p2
                          ON p2.idproduct = t2.idproduct
                     WHERE t2.iduser = u.iduser
                    );

关于mysql - 显示最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53950310/

相关文章:

php连接mysql并提交数据

mysql - 创建表空间 "error in creating database file, access denied (OS 5)"

mysql - 如何在具有连接的cakephp中添加限制

python - 高效的 Django 查询

sql - 如果使用 PostgreSQL 进行转换时出错,如何将字符串转换为整数并返回 0?

sql - 将 clickhouse 数组作为列返回

php - 我如何将这两个 MySQL 查询连接在一起

mysql - 向 MySQL 表添加索引后,表未打开

mysql - 访问 MySQL Migration/Hebrew 值变成问号 (??????)

mysql - 如何将日期中的月份放入sql查询的where子句中