从不同的表中获取最小值并保存在结果表中

时间:2016-03-11 03:51:08

标签: mysql

Table_1

+------+-------------+
| id   | value       |
+------+-------------+
| 1    | 1.58        |
| 2    | 8.88        |
+------+-------------+

Table_2

+------+-------------+
| id   | value       |
+------+-------------+
| 1    | 2.15        |
| 2    | 7.50        |
+------+-------------+

Table_3

+------+-------------+
| id   | value       |
+------+-------------+
| 1    | 9.58        |
| 2    | 2.88        |
+------+-------------+

Result

+------+-------------------+
| id   | value             |
+------+-------------------+
| 1    | 1.58 (min value)  |
| 2    | 2.88 (min value)  |
+------+-------------------+

你好,我对mysql不是很熟悉。

我想从不同的表中计算关于ID的最小值,并将其存储在Result表中。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

一种选择是在子查询中使用union all。然后在结果中使用min聚合:

select id, min(value) val
from (
    select id, value
    from table_1
    union all 
    select id, value
    from table_2
    union all
    select id, value
    from table_3
) t
group by id

或者您也可以join将这些表放在一起并使用least(假设所有表都有相同数量的id字段,并且每个id只有1行)。

select t1.id, least(t1.value, t2.value, t3.value) val
from t1 
  join t2 on t1.id = t2.id
  join t3 on t1.id = t3.id

修改:关于您的评论,只需添加CREATE TABLE

create table newtable
select ...