我如何 select 属于 SQL 中一列 MAX() 值的所有列?
How do I select all columns that belong to one columns MAX() value in SQL?
我需要从不同的列(在一条记录中)获取值,其中一列具有最大值。我如何 select 一列的最大值 和 来自同一记录的所有其他列?
SELECT MAX(bid_price)
FROM oc_product_auctionpack_customers pauc
LEFT JOIN oc_product_auctionpack pau ON (pauc.bid_product_id = pau.product_id)
WHERE bid_product_id = '" . $product_id . "'
这只是 selectselected 列的最高值
由于我的声望不够高,我还不能评论其他帖子的答案,Himanshu 的答案肯定更可靠。我要补充一点,如果您有两个相同的最高出价,您可以使用 RANK() 而不是 ROW_NUMBER()。
你应该可以使用 group by -
SELECT MAX(bid_price)
var_1,
var_2,
var_3
FROM oc_product_auctionpack_customers pauc
LEFT JOIN oc_product_auctionpack pau ON (pauc.bid_product_id = pau.product_id)
WHERE bid_product_id = '" . $product_id . "'
GROUP BY var_1, var_2, var_3;
var_1、var_2、var_3 引入的值相对于最大值是不同的。
除非你的意思是你想要一条记录,否则你可以通过以下添加来做同样的事情 -
SELECT MAX(bid_price)
var_1,
var_2,
var_3
FROM oc_product_auctionpack_customers pauc
LEFT JOIN oc_product_auctionpack pau ON (pauc.bid_product_id = pau.product_id)
WHERE bid_product_id = '" . $product_id . "'
GROUP BY var_1, var_2, var_3
ORDER BY MAX(bid_price) DESC
LIMIT 1;
这应该是return唯一的最高记录。
尝试使用 row_number()
Select * from (
SELECT pauc.*, pau.*, row_number() over (order by
bid_price desc) rn
FROM oc_product_auctionpack_customers pauc
LEFT JOIN oc_product_auctionpack pau ON (pauc.bid_product_id = pau.product_id)
WHERE bid_product_id = '" . $product_id . "')
Where rn=1;
我需要从不同的列(在一条记录中)获取值,其中一列具有最大值。我如何 select 一列的最大值 和 来自同一记录的所有其他列?
SELECT MAX(bid_price)
FROM oc_product_auctionpack_customers pauc
LEFT JOIN oc_product_auctionpack pau ON (pauc.bid_product_id = pau.product_id)
WHERE bid_product_id = '" . $product_id . "'
这只是 selectselected 列的最高值
由于我的声望不够高,我还不能评论其他帖子的答案,Himanshu 的答案肯定更可靠。我要补充一点,如果您有两个相同的最高出价,您可以使用 RANK() 而不是 ROW_NUMBER()。
你应该可以使用 group by -
SELECT MAX(bid_price)
var_1,
var_2,
var_3
FROM oc_product_auctionpack_customers pauc
LEFT JOIN oc_product_auctionpack pau ON (pauc.bid_product_id = pau.product_id)
WHERE bid_product_id = '" . $product_id . "'
GROUP BY var_1, var_2, var_3;
var_1、var_2、var_3 引入的值相对于最大值是不同的。
除非你的意思是你想要一条记录,否则你可以通过以下添加来做同样的事情 -
SELECT MAX(bid_price)
var_1,
var_2,
var_3
FROM oc_product_auctionpack_customers pauc
LEFT JOIN oc_product_auctionpack pau ON (pauc.bid_product_id = pau.product_id)
WHERE bid_product_id = '" . $product_id . "'
GROUP BY var_1, var_2, var_3
ORDER BY MAX(bid_price) DESC
LIMIT 1;
这应该是return唯一的最高记录。
尝试使用 row_number()
Select * from (
SELECT pauc.*, pau.*, row_number() over (order by
bid_price desc) rn
FROM oc_product_auctionpack_customers pauc
LEFT JOIN oc_product_auctionpack pau ON (pauc.bid_product_id = pau.product_id)
WHERE bid_product_id = '" . $product_id . "')
Where rn=1;