SQL - 从表中选择信息,其中数据的最大转数为rev

时间:2016-10-19 02:49:24

标签: sql-server

我正在尝试从我的表中选择信息,其中数据具有最大转速但未通过。 enter image description here

SELECT 
  ID,
  Name,
  REV
FROM Dms_sub
WHERE REV = (SELECT MAX(cast(REV as INT)) FROM Dms_sub GROUP BY Name)

获取错误:

  

子查询返回的值超过1。这是不允许的   子查询如下

4 个答案:

答案 0 :(得分:3)

看起来您可以使用row_number()获取排名,如果您订购DESC并获得RANK = 1,则应该为您提供具有最高REV的记录

body {
  margin-left: 5%;
  margin-right: 5%;
}

答案 1 :(得分:1)

试试这个。

private int getIndexByString(Spinner spinner, String string) {
    int index = 0;

    for (int i = 0; i < spinner.getCount(); i++) {
        if (spinner.getItemAtPosition(i).toString().equalsIgnoreCase(string)) {
            index = i;
            break;
        }
    }
    return index;
}

答案 2 :(得分:1)

你也可以使用如下的IN运算符。

SELECT 
ID,
  Name,
  REV
FROM Dms_sub
WHERE REV IN (SELECT MAX(cast(REV as INT)) FROM Dms_sub GROUP BY Name)

答案 3 :(得分:0)

你可以使用子查询

来调整它的最大转速
(SELECT MAX(cast(REV as INT)) FROM Dms_sub GROUP BY Name)

这种情况不正确,因为它返回了一个多行,因为你的子查询中没有包含名称条件,这就是

WHERE  NAME = DmsSub.NAME

这是将其调整为最大转速的正确方法

SELECT id, 
       NAME, 
       rev 
FROM   Dms_sub AS DmsSub 
WHERE  rev = (SELECT Max(rev) 
              FROM   Dms_sub 
              WHERE  NAME = DmsSub.NAME)