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