是否可以保留“ IN”条件子句的顺序?
我在SO上发现了这个问题,但在他的示例中,OP已经有一个排序的“ IN”子句。
我的情况不同,’IN’子句的顺序是随机的:
SELECT SomeField,OtherField
FROM TestResult
WHERE TestResult.SomeField IN (45,2,445,12,789)
我想按(45,2,445,12,789)顺序检索结果。我正在使用Oracle数据库。也许SQL中有一个属性,我可以将其与条件子句一起使用以指定保持子句的顺序。
除非您使用ORDER BY子句..否则不会有可靠的排序。
SELECT SomeField,OtherField
FROM TestResult
WHERE TestResult.SomeField IN (45,2,445,12,789)
order by case TestResult.SomeField
when 45 then 1
when 2 then 2
when 445 then 3
...
end
您可以将查询拆分为5个查询并集在一起,尽管…
SELECT SomeField,OtherField
FROM TestResult
WHERE TestResult.SomeField = 4
union all
SELECT SomeField,OtherField
FROM TestResult
WHERE TestResult.SomeField = 2
union all
...
我会更相信前一种方法,并且它可能会执行得更好。
问题内容: 我有一个非常简单的查询,该查询基于“ in”子句检索值。作为“ in”参数出现的列表已适当排序。 查询: 我需要将结果排序的方式与之相同,是否可以在没有纯sql的情况下但仅在and / or 的帮助下才能实现此目的? 问题答案: 您也可以通过JPA进行此操作,但必须按所需顺序创建用逗号分隔的ID列表。根据您的情况,您可以保持相同的顺序。 要创建逗号分隔的列表,您可以使用Java 8流:
问题内容: 我想知道是否有按IN()子句中的值顺序进行排序的方法(可能是一种更好的方法)。 问题是我有2个查询,一个查询获取所有ID,第二个查询获取所有信息。第一个创建我要第二个排序的ID的顺序。这些ID以正确的顺序放入IN()子句中。 因此,它类似于(极其简化): 问题在于第二个查询不会以将ID放入IN()子句中的顺序来返回结果。 我发现的一种解决方案是将所有ID放入具有自动递增字段的临时表中,
问题内容: 使用SELECT WHERE IN()时,是否可以保持顺序?例如,使用以下查询: 结果将使用ID的默认顺序返回。1,7,54,55,56 当我想保留IN中使用的顺序时:56,55,54,1,7 有没有一种快速的方法可以在MySQL中执行此操作,或者我将被迫在代码后对其进行排序? 问题答案: 使用FIND_IN_SET:
问题内容: 我想知道是否有按IN()子句中的值顺序进行排序的方法(可能是一种更好的方法)。 问题是我有2个查询,一个查询获取所有ID,第二个查询获取所有信息。第一个创建我要第二个排序的ID的顺序。这些ID以正确的顺序放入IN()子句中。 因此,它类似于(极其简化): 问题在于第二个查询不会以将ID放入IN()子句中的顺序来返回结果。 我发现的一种解决方案是将所有ID放入具有自动递增字段的临时表中,
问题内容: 我正在从具有整数id值的大型表(数百万行)中选择一组帐户记录。从某种意义上说,查询是最基本的。我正在做的是建立一个大型的逗号分隔列表,并将其作为“ in”子句传递到查询中。现在,结果是完全无序的。我想做的是按“ in”子句中的值顺序返回结果。 我想我将不得不建立一个临时表并进行联接,这是我想避免的,但可能无法做到。 有什么想法吗?现在,由于我们正试图限制输出大小,每个查询的大小上限为6
主要内容:Oracle IN操作符介绍,Oracle IN运算符示例,以下是纠正/补充内容:在本教程中将学习如何使用Oracle 运算符来确定值是否与列表或子查询中的任何值相匹配。 Oracle IN操作符介绍 Oracle 运算符确定值是否匹配列表或子查询中的任何值。 注:子查询是嵌套在另一个查询中的查询,可通过在子查询教程中了解子查询用法。 确定表达式是否与值列表匹配的Oracle 运算符的语法如下所示: 并且表达式的语法与子查询匹配: 参数 在上面语法中,这里将介绍每个参数含义: