在mysql中选择最小值及其整个列[重复]

Posted

技术标签:

【中文标题】在mysql中选择最小值及其整个列[重复]【英文标题】:Select Minimum value and their entire column in mysql [duplicate] 【发布时间】:2018-10-04 14:28:31 【问题描述】:

考虑下面两个表,

tab1:-

**id**   **name** 
  1     aaa
  2     bbb
  3     ccc

tab2:-

**id** **reference_id** **value**  **category**
 1               2         0.5          5
 2               2         0.03         9
 3               3         0.9          8
 4               1         0.3          3
 5               1         0.1          2

在tab2中,来自tab1(reference_id)的id有2个值,依此类推,我需要每个id的最小值,下面是我尝试过的代码SELECT tab1.name,tab1.id,MIN(tab2.value) as VAL,tab2.category FROM tab1 JOIN tab2 ON tab1.id=tab2.reference_id WHERE 1 GROUP BY tab1.id 我得到低于输出

**name** **id** **VAL** **category**
  aaa       1     0.1       3
  bbb       2     0.03      5
  ccc       3     0.9       8

似乎最小值正确,但其他列显示错误值,我需要如下输出,

**name** **id** **VAL** **category**
  aaa       1     0.1       2
  bbb       2     0.03      9
  ccc       3     0.9       8

感谢任何帮助

【问题讨论】:

重复的答案对 MIN 和对 MAX 一样有效。 【参考方案1】:

你应该使用一些嵌套的子查询

  SELECT tab1.name
      ,tab1.id
      , t2.VAL
      ,t2.category 
  FROM tab1 
  JOIN (   select reference_id, val, category 
from tab2 
inner join (
      SELECT 
          ,tab2.reference_id 
          ,MIN(tab2.value) as VAL
      FROM  tab2
      group by tab2.reference_id 
) t on t.reference_id = tab2.reference_id and t.val = tab2.value 
) t2 on tab1.id = t2.reference_id

【讨论】:

以上是关于在mysql中选择最小值及其整个列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

sql选择某一列的最大值与最小值并在同一列中显示

获取列及其索引的非零最小值

如何找到所有数据框的最大值,最小值[不是列值,也不是行] [重复]

熊猫数据框:在固定其他列的列中提取具有特定标准/条件最小值的数据[重复]

c编程:求出4×4矩阵中最大和最小元素值及其所在行下标和列下标,求出两条主对角线元素之和。

选择总和列,然后从列中获取最小值