查询选择重复项+查找最低值

时间:2017-08-31 21:00:46

标签: mysql sql

我在3个不同的数据库中有3个表;目前,这里的目标是在三个数据库中找到重复的唯一ID,然后找到重复唯一ID的最低价格值。

目前我正在使用INNER JOIN仅在2个数据库之间进行查询...有人可以建议如何添加第三个数据库吗?

set @a = (SELECT db1.tb1.var1 from db1.tb1
INNER JOIN db2.tb1 ON db2.tb1.var1 = db1.tb1.var1
UNION  );

此外,一旦我将@a变量设置为副本,我想在此处获取辅助值。

SELECT price
 FROM db1.tb1
  WHERE asin=@a
UNION ALL
SELECT price
 FROM db2.tb1
  WHERE asin=@a
UNION ALL
SELECT  price
 FROM db3.tb1
  WHERE asin=@a

然而,我得到的结果会返回多行(显然),我如何仅查询MIN()数?

感谢任何帮助。

谢谢,

2 个答案:

答案 0 :(得分:1)

将查询放入子查询中,然后在主查询中使用MIN()

SELECT MIN(price)
FROM (
    SELECT price
     FROM db1.tb1
      WHERE asin=@a
    UNION ALL
    SELECT price
     FROM db2.tb1
      WHERE asin=@a
    UNION ALL
    SELECT  price
     FROM db3.tb1
      WHERE asin=@a) AS x

答案 1 :(得分:0)

您可以使用order bylimit

SELECT price
FROM db1.tb1
WHERE asin = @a
UNION ALL
SELECT price
FROM db2.tb1
WHERE asin = @a
UNION ALL
SELECT price
FROM db3.tb1
WHERE asin = @a
ORDER BY price
LIMIT 1;