Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何从行中选择最大值并连接到另一个表_Mysql_Sql_Hive_Google Bigquery - Fatal编程技术网

Mysql 如何从行中选择最大值并连接到另一个表

Mysql 如何从行中选择最大值并连接到另一个表,mysql,sql,hive,google-bigquery,Mysql,Sql,Hive,Google Bigquery,我正在尝试连接两个表,它们是关于values列的max值的。我想根据加入时的最大值产生如下所示的预期结果 select * from order ------------------------- | ID | value | Name | ------------------------- | 1 | 23 | REM | | 2 | 0 | SER | | 3 | 13 | MH | | 4 | 3 | MH

我正在尝试连接两个表,它们是关于values列的max值的。我想根据加入时的最大值产生如下所示的预期结果

select * from order
-------------------------
| ID    |  value | Name |
-------------------------
|  1    |  23    | REM  |
|  2    |  0     | SER  |
|  3    |  13    | MH   |
|  4    |  3     | MH   |
|  5    |  1     | MP   |
-------------------------

select * from product
-------------------------
| ID    | value  | Name |
-------------------------
|  1    |   2    | ABC  |
|  2    |  2    | DEG  |
|  3    |  17    | XYZ  |
-------------------------

Desired result:
-------------------------
| ID    | Value  | Name |
-------------------------
| 1     |  23    | REM  |
| 2     |  2    | DEG  |
| 3     |  17    | XYZ  |
| 4     |   3    | MH   |
| 5     |   1    | MP   |
-------------------------
我已经尝试了下面这样的方法,但它没有从其他表中获取值(名称)

SELECT
 MAX(IF(a.value >b.value , a.value ,b.value )) AS Value
  from order a left join product b on a.ID= b.ID

请建议如何从这两个表中获得预期结果。

下面是针对BigQuery标准SQL的

#standardsql
select as value array_agg(struct(id, value, name) order by value desc limit 1)[offset(0)]
from 
(
  select * from `project.dataset.order`
  union all
  select * from `project.dataset.product`
)
group by id    
有输出


您可以使用
完全连接来执行此操作:

select id,
       (case when p.val is null or p.val < o.val then o.val else p.val end),
       (case when p.val is null or p.val < o.val then o.name else p.name end)     
from product p full join
     order o
     using (id);
选择id,
(p.val为空或p.val

我只是觉得这是思考问题的最简单方法。

我只是想检查一下-您只是根据价值订购吗?没有将值与其他表进行比较?正如我在问题中提到的,我想与其他表进行比较,并取最大值,这正是它的实际情况。你看到它不是这样做的吗?然后提供示例:o)刚刚修改了有问题的示例仍然适用于我-获得预期结果-您看到了什么问题?