mysql结果用括号表示
我试图找出比某个学生的最低分数StuID=1027%低的学生的ID,我知道他们的最低分数是33。 如果我使用下面的命令,我会得到相当数量的结果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 |
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;