Mysql 显示最大值
我想显示具体用户的最大保证。例如,用户购买了3件产品,它们有1、2、5年的保修期。所以我想展示5年的保修期和该产品的名称。 我做了子查询,以防很少有产品有同样的保证Mysql 显示最大值,mysql,sql,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 guara
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`)
此查询显示所有产品及其保证。我认为最简单的方法是
子字符串\u index()
/组\u 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
);
我认为这是有效的
select [User].Name as [UserName],
Product.MaxGuarantee,
Product.Name as Product_Name
from [Users] [User]
left join Transactions [Transaction]
on [Transaction].[User] = [User].ID
cross apply(
select max(guarantee) MaxGuarantee, Name
from Products
where ID = [Transaction].Product
) Product
where [User].ID = ''
啊,废话。戈登来了。对我来说,不再有SQL信誉:/n允许“-”作为表/列标识符可能会造成灾难性的损害