组查询和前n个记录SQL
如果我有一个表,其中列组查询和前n个记录SQL,sql,database,Sql,Database,如果我有一个表,其中列pid,sid作为主键,列price和color 如何创建一个SQL查询,以获取每个pid(产品ID)中颜色等于绿色的最便宜价格 例如,我有行: (1, 1, 10, "green") (1, 2, 8, "green") (1, 3, 11, "green") (2, 1, 7, "green") (2, 2, 15, "green") (2, 3, 22, "green") (3, 1, 10, "red") (1, 2, 8, "red") (1, 3, 11, "r
pid,sid
作为主键,列price
和color
如何创建一个SQL查询,以获取每个pid
(产品ID)中颜色等于绿色的最便宜价格
例如,我有行:
(1, 1, 10, "green")
(1, 2, 8, "green")
(1, 3, 11, "green")
(2, 1, 7, "green")
(2, 2, 15, "green")
(2, 3, 22, "green")
(3, 1, 10, "red")
(1, 2, 8, "red")
(1, 3, 11, "red")
然后我将收到:(1,2,8)->pid=1
和(2,1,7)->pid=2
。没有pid=3
,因为它的颜色是红色
提前谢谢
SELECT pid, min(Price)
from table
Where Color='green'
group by pid
或者如果您想要整行(并且您的sql平台支持排名)
试试这个
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT pid, min(price) minPrice
FROM tableName b
) c ON a.pid = c.pid AND
a.price = c.minprice
WHERE a.color = 'green'
@用户1613224请查看以下内容:
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT pid, min(price) minPrice
FROM tableName b
) c ON a.pid = c.pid AND
a.price = c.minprice
WHERE a.color = 'green'