mysql结果用括号表示

mysql结果用括号表示,mysql,sql,Mysql,Sql,我试图找出比某个学生的最低分数StuID=1027%低的学生的ID,我知道他们的最低分数是33。 如果我使用下面的命令,我会得到相当数量的结果 mysql> SELECT DISTINCT STUID FROM uniData WHERE PERCENT < 33; +-------+ | STUID | +-------+ | 1001 | | 1010 | | 1012 | | 1016 | | 1017 | | 1022 | | 1032 | | 1034 |

我试图找出比某个学生的最低分数StuID=1027%低的学生的ID,我知道他们的最低分数是33。 如果我使用下面的命令,我会得到相当数量的结果

mysql> SELECT DISTINCT STUID FROM uniData WHERE PERCENT < 33;
+-------+
| STUID |
+-------+
|  1001 |
|  1010 |
|  1012 |
|  1016 |
|  1017 |
|  1022 |
|  1032 |
|  1034 |
|  1045 |
|  1048 |
|  1055 |
+-------+
11 rows in set, 3 warnings (0.00 sec)
但是,如果我把这些放在一起,我只会选择一个学生ID:

mysql> SELECT DISTINCT STUID FROM uniData WHERE PERCENT < (SELECT  MIN(PERCENT) FROM uniData WHERE STUID = 1027);
+-------+
| STUID |
+-------+
|  1055 |
+-------+
1 row in set (0.00 sec)
为什么mysql对此有不同的解释?我应该如何修改我的第三个查询,以便获得与第一个查询相同的结果

我是否使用“LIKE”或“=”似乎并不重要。 删除DISTINCT似乎没有效果。 它是第一个列表中的最后一个StuID这一事实与此有关吗?

您可以使用between

SELECT DISTINCT STUID FROM uniData WHERE PERCENT between(0,(SELECT  MIN(PERCENT) FROM uniData WHERE STUID LIKE '1027'))
试试看:

  SELECT STUID ,(SELECT  MIN(PERCENT) FROM uniData WHERE STUID LIKE '1027') as mins,
  PERCENT 
  FROM uniData 
  group by STUID
  having `PERCENT` < mins ;

你的问题很好用

使用下面的查询。这可能对你有帮助

SELECT a.* from(
   SELECT STUID,MIN(PERCENT)Percent FROM uniData 
   group by STUID
)a where a.Percent < 33;

百分比是如何存储的?我的第一个猜测是,它是一个带小数点的数字类型,因此student 1027的值可能真的是32.6。为什么要使用Like而不是=???不幸的是,这会返回一个空集。您检查过演示了吗?多空?这仍然只返回一个值
SELECT a.* from(
   SELECT STUID,MIN(PERCENT)Percent FROM uniData 
   group by STUID
)a where a.Percent < 33;