VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6139|回复: 45

一个SQL语句查询问题(查询最小值)(急)

[复制链接]

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-26 20:20:01 | 显示全部楼层 |阅读模式
两个表A,B
A有ID,NAME等字段
B有ID,AID,PRICE等字段
注:A.ID关联B.AID

我想按A分类查询B产品的最低价?

假如有数据:
A表
------------
ID    NAME
1      DEMO
2      DEMO2
------------------------

B表
-------------
ID       AID    PRICE
1         1      30
2         1      32
3         1      26
-------------
如何查询到以下结果
---------------
A.ID    A.NAME    B.ID   B.AID   B.PRICE
1       DEMO      3      1       26
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-2-18 16:30:01 | 显示全部楼层
select A.ID, A.NAME, B.ID ,  B.AID,   B.PRICE from tablea a join  tableb b on a.id=b.aid where b.price in(select min(price) from tableb group by aid)
回复

使用道具 举报

0

主题

16

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-18 22:30:01 | 显示全部楼层
SELECT *
FROM A
INNER JOIN  B
ON a.id=b.aid
WHERE b.price=
        (SELECT MAX(prics)
        FROM B bx
        WHERE b.aid=bx.aid)
回复

使用道具 举报

0

主题

16

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-18 23:45:01 | 显示全部楼层
Sorry,应该是最低价:
SELECT *
FROM A
INNER JOIN  B
ON a.id=b.aid
WHERE b.price=
        (SELECT MIN(prics)
        FROM B bx
        WHERE b.aid=bx.aid)
回复

使用道具 举报

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-2-19 02:00:01 | 显示全部楼层
create table A(id int, name varchar(10))

insert into a(ID,NAME)
select 1,'DEMO'
union all
select 2,'DEMO2'
select * from a

create table B(id int , aid int ,price int)

insert into b(id,aid,price)
select 1,1,30
union all
select 2,1,32
union all
select 3,1,26

---
select distinct *
from a,b
where a.id = (select max(id) from a) and b.id = (select max(id) from b)
回复

使用道具 举报

0

主题

49

帖子

35.00

积分

新手上路

Rank: 1

积分
35.00
发表于 2020-2-19 11:00:02 | 显示全部楼层
select *
from a inner join b t1 on a.id = t1.id
where not exists (select 1 from b where aid = t1.aid and price < t1.price)
回复

使用道具 举报

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-2-19 13:00:01 | 显示全部楼层
select distinct *
from a,b
where a.id = b.aid and b.price = (select min(price) from b)
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-2-19 15:45:01 | 显示全部楼层
create table A(ID int, Name varchar(10))
insert A select 1,      'DEMO'
union all select 2,      'DEMO2'

create table B(ID int, AID int, PRICE int)
insert B select 1,         1,      30
union all select 2,         1,      32
union all select 3,         1,      26

select * from A
inner join
(
select * from B as tmpB
where not exists(select 1 from B where AID=tmpB.AID and PRICE<tmpB.PRICE)
) B on A.ID=B.AID

--result
ID          Name       ID          AID         PRICE      
----------- ---------- ----------- ----------- -----------
1           DEMO       3           1           26

(1 row(s) affected)
回复

使用道具 举报

0

主题

11

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-2-19 17:15:01 | 显示全部楼层
create table A(id int identity(1,1),name varchar(10))
create table B(id int identity(1,1),aid int,price varchar(10))
insert into a
select 'demo1'
union all select 'demo2'
insert into b
select 1,'30' union all
select 1,'32' union all
select 1,'36'
select a.id,a.name,a.bid,a.aid,a.price from (select a.id,a.name,b.id as bid,b.aid,b.price from A a inner join B b on a.id=b.aid ) a,b where a.id=b.id and a.price<=b.price
drop table a
drop table b
回复

使用道具 举报

0

主题

48

帖子

30.00

积分

新手上路

Rank: 1

积分
30.00
发表于 2020-2-19 17:30:01 | 显示全部楼层
select a.*,b.* from
a join b on a.id=b.aid
join (select aid,min(price) as price from b group by aid) c on b.aid=c.aid and b.price=c.price
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表