SQL:如何从一个表中选择最大值,而从另一表中选择其他数据

时间:2019-01-21 12:37:16

标签: mysql sql sql-server

我想从第一个表(naziv表)中选择slikapredmet,并从第二个表(iznos_ponude表)中选择ponuda

这是一个拍卖系统。第一个表代表拍卖对象(宝马,奔驰等),第二个表代表对象的ID(predmet_id是外键)和该对象的出价。

我需要显示具有最高出价的每个对象。

示例:BMW - IMAGE URL - 17000

这将帮助您更好地理解:

naziv = name
slika = image
iznos_ponude = bid

"predmet" table

"ponuda" table

2 个答案:

答案 0 :(得分:1)

如果要包含没有出价的对象,请使用left joingroup by

select p.naziv, p.slika, max(po.iznos_ponude)
from predmet p left join
     ponude po
     on po.predmet_id = p.predmet_id
group by p.naziv, p.slika;

答案 1 :(得分:1)

使用SELECT * FROM (SELECT t1.naziv, t1.slika, T2.iznos_ponude, Row_number() OVER( partition BY T2.predmet_id ORDER BY iznos_ponude DESC) rn FROM predmet T1 INNER JOIN ponuda T2 ON T1.predmet_id = T2.predmet_id)t WHERE rn = 1 在SQL Server中执行此操作的另一种方法,如下所示。

SELECT t1.naziv, 
       t1.slika, 
       (SELECT Max(iznos_ponude) 
        FROM   ponuda 
        WHERE  predmet_id = T1.predmet_id) iznos_ponude 
FROM   predmet T1 

同样可以使用如下子查询来实现。

<Menu.Item key="3">
    <Icon type="inbox" />
    <span>
        <a href="#">Option 3</a>
    </span>
</Menu.Item>