如何让MySQL从多个表中的price列返回最低价格

时间:2018-02-15 08:18:56

标签: php mysql

我有一个包含大量表格(10+)的数据库,所有表格都包含以下列;

store1
store2
store3...

我每隔5分钟使用我特定产品的当前价格数据更新这些表格。

我需要做的是查询所有表格以返回最后价格,然后返回最低价格,以及它来自的表格(或者可能只是它来自的表格)。

所以,如果我有以下表格;

{{1}}

我需要找到哪个商店的产品价格最低。

我可以通过在PHP变量中返回最后一个价格然后在PHP中进行比较来做到这一点,但是如果可能的话,宁愿用SQL来做。

似乎不可能使用html或ascii文本包含任何类型的表。格式化总是被填满。这里有一些样本数据作为图像,这似乎是我在这个平台上提供它的唯一方式;

Sample Data Image

所以我需要比较所有表格的最后价格(最高ID或时间),并找出最低价格。查询应返回501.09

3 个答案:

答案 0 :(得分:1)

SELECT MIN(price) FROM
(
     SELECT price FROM (SELECT price FROM store1 ORDER BY timestamp DESC LIMIT 1)
     UNION
     SELECT price FROM (SELECT price FROM store2 ORDER BY timestamp DESC LIMIT 1)
     UNION
     SELECT price FROM (SELECT price FROM store3 ORDER BY timestamp DESC LIMIT 1)
)

如果我理解正确,这就是你想要的。

答案 1 :(得分:0)

检查这个

SELECT MIN(price),store FROM (SELECT *,if(1,'store1','store1') as store FROM `store1`
UNION ALL
SELECT *,if(1,'store2','store2') as store FROM `store2`
UNION ALL
SELECT *,if(1,'store3','store3') as store FROM `store3`) as store;

答案 2 :(得分:-1)

您可以从映射的所有表中选择所有最后价格,例如tableName: price

SELECT store1.`price` AS store1, store2.`price` AS store2
 FROM store1, store2 
ORDER BY store1.created_at DESC, store2.created_at DESC
 LIMIT 1

输出类似于:

store1  store2  
------  --------
50       42   

您可以使用PHP为所有表生成查询,进行查询,获取所有最新价格(对于每个表)作为数组,然后从该数组中获取最低值。