如何在sqlite中选择最小值?

如何在sqlite中选择最小值?,sql,sqlite,Sql,Sqlite,我的表MS_Firestation原始数据如下: FireStation FireStationOriginalCode SortNo Micode 1 1 1 1 1 2 1 2 1 3 2 3 1 4

我的表MS_Firestation原始数据如下:

 FireStation FireStationOriginalCode SortNo  Micode
    1                 1                  1    1
    1                 2                  1    2
    1                 3                  2    3
    1                 4                  1    2
关键词:消防站消防站原始代码 我将查询写为:

SELECT   Min(SortNo) as SortNo,m.FireStationOriginalCode
    FROM MS_FireStationOriginalMI m
    GROUP BY MICode
结果:

SortNo  FireStationOriginalCode
2          4
3          3
1          1
为什么??SortNo=2,但获取FireStationOriginalCode=4

我想要SortNo=2和FireStationOriginalCode=2

如何编写sql?

您的聚合函数MIN位于错误的列中,SQLite以外的sql引擎将对此进行投诉

SELECT   Min(SortNo) as SortNo,m.FireStationOriginalCode
    FROM MS_FireStationOriginalMI m
    GROUP BY m.FireStationOriginalCode
SELECT  SortNo, MIN(m.FireStationOriginalCode)
FROM MS_FireStationOriginalMI m
GROUP BY MICode;
将返回所需的结果

编辑:你的问题我不清楚,但我知道我想我明白了:

SELECT o.SortNo, o.FireStationOriginalCode
FROM MS_FireStationOriginalMI o
INNER JOIN (
  SELECT  MICode, MIN(SortNo) AS SortNo
  FROM MS_FireStationOriginalMI m
  GROUP BY MICode
) AS m ON m.MICode=o.MICode AND m.SortNo=o.SortNo;

将返回SortNo,FireStationOriginalCode,该代码与每个微码的最小SortNo匹配

我可以通过sql先得到3行:

SELECT m.*
  FROM MS_FireStationOriginalMI m
  Where m.FireStationOriginalCode=(Select b.FireStationOriginalCode from      MS_FireStationOriginalMI b where m.firestation = b.firestation and m.micode = b.micode  order by b.sortno limit 1)

不,FireStationOriginalCode=1,2,3,4,我想得到第1,2行,3@mum如果在一列或多列的Select语句中有聚合函数,select语句中未包含在任何聚合函数中的任何其他列都必须放在GROUP BY子句中。如果GROUP BY m.FireStationOriginalCode将得到4行。@妈妈是的,您应该得到4行,因为您的查询是,请给我所有m.FireStationOriginalCode以及该m.FireStationOriginalCode的最小相关SortNo。如果你想要更少的行,在你的查询中使用WHERE子句来限制返回的行数。我想得到min SORTNOC你能支持我吗,Case SortNo?MICode如何处理这个问题?我不明白你想要什么。我建议你编辑你的问题,并明确说出你假装的内容。
SELECT x.a
     , x.b
     , x.c
  FROM my_table x
  JOIN (SELECT b,MIN(c) min_c FROM my_table GROUP BY b) y
    ON y.b = x.b
   AND y.min_c = x.c
SELECT m.*
  FROM MS_FireStationOriginalMI m
  Where m.FireStationOriginalCode=(Select b.FireStationOriginalCode from      MS_FireStationOriginalMI b where m.firestation = b.firestation and m.micode = b.micode  order by b.sortno limit 1)