如何在 sql 中的列中查找最小值

How to find minimum values in a column in sql

如果我有这样的table:

id   name   value
1    abc      1
2    def      4
3    ghi      1
4    jkl      2

我怎样才能 select 一个新的 table 仍然有 id, name, value 但只有最小值的

在这个例子中,我需要这个 table 返回:

1  abc 1
3  ghi 1

找到这些值非常简单:

SELECT *
FROM YourTable
WHERE value = (SELECT MIN(Value) FROM YourTable);

至于将这些行放在另一个 table 中的正确语法,这将取决于您使用的数据库引擎。

@Lamak 解决方案的替代方法是使用 rank window 函数。根据具体情况,它可能会表现得更好:

SELECT id, name, value
FROM   (SELECT id, name, value, RANK() OVER (ORDER BY value ASC) AS rk
        FROM   mytable) t
WHERE  rk = 1

不确定这是否是您想要做的,但我认为这会起作用:

    --creating #temp1 to recreate your table/example
     CREATE TABLE #TEMP1
    (id      INT       NOT NULL PRIMARY KEY, 
     name    CHAR(3)   NOT NULL,
     value   INT       NOT NULL)


    INSERT INTO #TEMP1
    VALUES 
    (1,'abc',1), 
    (2,'def',4), 
    (3,'ghi',1), 
    (4,'jkl',2)

    -verify correct

    SELECT * FROM #temp1

    --populate new table with min value from table 1

    SELECT *
    INTO #TEMP2
    FROM #TEMP1
    WHERE value = (SELECT MIN(value) 
                   FROM #TEMP1)

    SELECT * FROM #TEMP2