我的SQL数据库中有一个表格如下:
id type radius
-------------------------
1 type1 0.25
2 type2 0.59
3 type1 0.26
4 type1 0.78
5 type3 0.12
6 type2 0.45
7 type3 0.22
8 type3 0.98
我无法弄清楚如何定义SELECT
查询,该查询返回每种类型的最小半径。
换句话说,我正在寻找的结果将是:
结果:
id type radius
-------------------------
1 type1 0.25
6 type2 0.45
7 type3 0.22
我假设我使用ORDER BY
来命令半径从最低到最高并抓住最低。但是,我还假设我需要在类型上使用DISTINCT
,但我无法弄清楚如何将其关闭。
任何专家SQL的人都知道这种SELECT
查询是否可行?非常感谢任何帮助!
非常感谢, 布雷特
答案 0 :(得分:6)
您希望按类型分组,然后从该类型获取最小半径,并按类型
对其进行排序SELECT type, MIN(radius) FROM table
GROUP BY type
ORDER BY type
如果您希望id与min一起使用,则不能像我第一次输入那样执行:该id是类型的半随机ID。可悲的是,你必须得到满足(从我的头脑中)
SELECT t1.id,t1.type,t1.radius FROM table t1
WHERE radius = (
SELECT MIN(radius) FROM table
WHERE radius = t1.radius
)
(最终编辑:您必须测试最后一个,基本警告是在第一个查询中您无法可靠地获取Id,因为它不会特别属于具有最小半径的类型) 强>
答案 1 :(得分:2)
尝试使用
SELECT min(radius) FROM table GROUP BY type
min将返回最小值,因为distinct将返回不同的值,但group by允许您对不同的字段执行查询。
结帐http://www.w3schools.com/sql/sql_groupby.asp (还有http://www.w3schools.com/sql/sql_quickref.asp)
答案 2 :(得分:0)
你必须将min和GROUP BY结合起来
答案 3 :(得分:0)
我相信这应该有效:
SELECT t1.id,t1.type,t1.radius FROM table GROUP BY type ORDER BY radius
由于默认情况下按顺序递增最小值应为显示的值。
答案 4 :(得分:0)
我正在尝试在Android Room中设置用户选择的SQL查询。
@Query("SELECT * FROM wrestler_table ORDER BY :columnName :sortOrder LIMIT :size")
LiveData<List<WrestlersEntity>> getAllWrestlers(String columnName, String sortOrder, int size);
Android stuido将查询中的sortOrder列为错误。
ASC, BETWEEN, COLLATE, DESC, IN, LIMIT, comma or semicolon expected, got ':sortOrder'
我希望sortOrder是一个变量,以便用户可以更改数据返回的顺序。对我在这里做错的任何想法吗?