Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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 - Fatal编程技术网

Mysql 如何获取包含特定最小值的行?

Mysql 如何获取包含特定最小值的行?,mysql,sql,Mysql,Sql,我有一个3行3列的表。对于所有具有相同名称的行,我希望检索位置列中具有最小值的行。在这个例子中。结果应该是(苹果,红色,3)和(甜瓜,大,空) “位置”列中的null值表示水果不在列表中 name category position apple fruit 5 apple red 3 melon big null null使这个问题变得棘手。我不确定它应该被认为是“高”还是“低”。让我假设“低”: null位置

我有一个3行3列的表。对于所有具有相同名称的行,我希望检索位置列中具有最小值的行。在这个例子中。结果应该是(苹果,红色,3)和(甜瓜,大,空)

“位置”列中的null值表示水果不在列表中

name     category    position
apple     fruit        5
apple      red         3
melon      big       null

null
使这个问题变得棘手。我不确定它应该被认为是“高”还是“低”。让我假设“低”:


null
位置是什么意思?它意味着名称在类别中没有位置。多行具有相同位置如何?@UsagiMiyamoto。这是一个适合OP的问题。问题的措辞表明“min”位置是唯一的。您尝试过这个查询吗?因为结果是错误的。@Crazysabpath这是一个打字错误,他已经更新了他的答案。这个查询工作正常+1从我这边。@Jibin Balachandran你是对的,现在它给出了正确的结果。
select t.*
from t
where coalesce(t.position, -1) = (select min(coalesce(t2.position, -1))
                                  from t t2
                                  where t2.name = t.name
                                 );
SELECT 
    f.* 
FROM
(
    SELECT
        name, 
        MIN(IFNULL(position,0)) as min_position 
    FROM 
        fruits 
    GROUP BY 
        name
) tmp
LEFT JOIN 
    fruits f ON 
    f.name = tmp.name AND 
    IFNULL(f.position,0) = min_position
-- GROUP BY name 
-- optional if multiple (name, position) are possible for example
-- [apple,fruit,5], [apple,red,5]