Sqlite 当有多个选项时,选择中的特定行

Sqlite 当有多个选项时,选择中的特定行,sqlite,select,Sqlite,Select,这是一个从表中选择行的查询。该表中可能有许多行与特定(WritingSystem,ExpressionId)配对 我希望结果集为每个WritingSystem包含(最多)一行,并且我希望它是长度(Form)值最小的行。如果没有一些丑陋的加入,我想不出怎么做 这个查询当然只返回一行,而我想要多行,其中有WritingSystem的多个值 select Form,WritingSystem,_id from TextForms where InterpretationId=? limit 1; 这

这是一个从表中选择行的查询。该表中可能有许多行与特定(WritingSystem,ExpressionId)配对

我希望结果集为每个WritingSystem包含(最多)一行,并且我希望它是长度(Form)值最小的行。如果没有一些丑陋的加入,我想不出怎么做

这个查询当然只返回一行,而我想要多行,其中有WritingSystem的多个值

select Form,WritingSystem,_id from TextForms where InterpretationId=? limit 1;
这个查询正确地为WritingSystem的每个值返回一行,但就我所见,选择哪一行是任意的

select Form,WritingSystem,_id from TextForms where InterpretationId=? group by WritingSystem;

使用GROUP BY时,必须指定如何计算每个组的输出值。这通常是通过像MIN/MAX/COUNT/SUM这样的聚合函数来完成的

在SQLite 3.7.11及更高版本中,当您使用MIN/MAX时,其他列(如
\u id
)保证来自与MIN匹配的同一行:

SELECT Form, WritingSystem, _id, MIN(LENGTH(Form))
FROM TextForms
WHERE InterpretationId = ?
GROUP BY WritingSystem

你有什么样的数据可以发布吗?
SELECT Form, WritingSystem, _id, MIN(LENGTH(Form))
FROM TextForms
WHERE InterpretationId = ?
GROUP BY WritingSystem