mysql 无法使用连接获取最小值

tzxcd3kk  于 2023-02-28  发布在  Mysql
关注(0)|答案(4)|浏览(122)

我有两个表infosell_infoinfo表包含"记录列表",sell_info包含"打折产品"。
我想得到id = 1记录的"最低"值。我该怎么做?
这里是我的表"信息":
| 身份证|姓名|
| - ------|- ------|
| 1个|美国广播公司|
| 第二章|XYZ|
| 三个|药品审评中心|
| ...|...|
下面是我的表"sell_info":
| 身份证|产品标识|价格|
| - ------|- ------|- ------|
| 1个|1个|五个|
| 第二章|1个|三个|
| 三个|1个|八个|
| 四个|第二章|第二章|
| ...|...|...|
预期结果为(获取id ="1"的最低价格):
| 身份证|姓名|价格|
| - ------|- ------|- ------|
| 1个|美国广播公司|三个|

ozxc1zmp

ozxc1zmp1#

通过分别在id列和product_id列上联接infosell_info表,然后使用MIN()函数获取最低价格,可以获得所需的结果。

SELECT info.id, info.name, MIN(sell_info.price) AS price
FROM info
JOIN sell_info ON info.id = sell_info.product_id
WHERE info.id = 1
GROUP BY info.id, info.name;
y1aodyip

y1aodyip2#

下面的查询将给予您想要的结果。
它使用内部查询从SELL_INFO表中获取每个产品ID的最低价格,然后使用该内部查询中的产品ID联接到INFO表,以获取产品的名称。

SELECT
  INFO.ID, 
  INFO.NAME,
  MINP.MIN_PRICE
FROM
  INFO as INFO
  INNER JOIN 
  (
  SELECT 
    SI.PRODUCT_ID as PRODUCT_ID, 
    min(SI.PRICE) as MIN_PRICE
  FROM
    SELL_INFO as SI
  GROUP BY
    SI.PRODUCT_ID
  ) as MINP
    ON INFO.ID = MINP.PRODUCT_ID
WHERE
MINP.PRODUCT_ID = 1
f8rj6qna

f8rj6qna3#

这个应该可以

SELECT i.id, i.name, MIN(s.price) as price
FROM info as i, sell_info as s
WHERE i.id = s.product_id AND i.id = 1
GROUP BY i.id, i.name
kr98yfug

kr98yfug4#

这很简单。这里有一个SQLFIDDLE。

select i.id, i.name, s.price
from info i
JOIN sell_info s ON i.id = s.product_id
WHERE i.id = 1 AND s.price = (
    SELECT MIN(price)
    FROM sell_info
    WHERE product_id = 1
);

相关问题