SELECTsalesperson.name,-- find maximum sale size for this salesperson(SELECT MAX(amount) AS amountFROM all_salesWHERE all_sales.salesperson_id = salesperson.id)AS amount,-- find customer for this maximum size(SELECT customer_nameFROM all_salesWHERE all_sales.salesperson_id = salesperson.idAND all_sales.amount =-- find maximum size, again(SELECT MAX(amount) AS amountFROM all_salesWHERE all_sales.salesperson_id = salesperson.id))AS customer_nameFROMsalesperson;
SELECTsalesperson.name,max_sale.amount,max_sale_customer.customer_nameFROMsalesperson,-- calculate maximum size, cache it in transient derived table max_sale(SELECT MAX(amount) AS amountFROM all_salesWHERE all_sales.salesperson_id = salesperson.id)AS max_sale,-- find customer, reusing cached maximum size(SELECT customer_nameFROM all_salesWHERE all_sales.salesperson_id = salesperson.idAND all_sales.amount =-- the cached maximum sizemax_sale.amount)AS max_sale_customer;
ERROR 1054 (42S22): Unknown column 'salesperson.id' in 'where clause'
SELECTsalesperson.name,max_sale.amount,max_sale_customer.customer_nameFROMsalesperson,-- calculate maximum size, cache it in transient derived table max_saleLATERAL(SELECT MAX(amount) AS amountFROM all_salesWHERE all_sales.salesperson_id = salesperson.id)AS max_sale,-- find customer, reusing cached maximum sizeLATERAL(SELECT customer_nameFROM all_salesWHERE all_sales.salesperson_id = salesperson.idAND all_sales.amount =-- the cached maximum sizemax_sale.amount)AS max_sale_customer;
SELECTsalesperson.name,-- find maximum size and customer at same time(SELECT amount, customer_nameFROM all_salesWHERE all_sales.salesperson_id = salesperson.idORDER BY amount DESC LIMIT 1)FROMsalesperson;
ERROR 1241 (21000): Operand should contain 1 column(s)
SELECTsalesperson.name,max_sale.amount,max_sale.customer_nameFROMsalesperson,-- find maximum size and customer at same time(SELECT amount, customer_nameFROM all_salesWHERE all_sales.salesperson_id = salesperson.idORDER BY amount DESC LIMIT 1)AS max_sale;
ERROR 1054 (42S22): Unknown column 'salesperson.id' in 'where clause'
SELECTsalesperson.name,max_sale.amount,max_sale.customer_nameFROMsalesperson,-- find maximum size and customer at same timeLATERAL(SELECT amount, customer_nameFROM all_salesWHERE all_sales.salesperson_id = salesperson.idORDER BY amount DESC LIMIT 1)AS max_sale;
文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




