相关疑难解决方法(0)

按SQL IN()子句中的值顺序排序

我想知道是否存在(可能更好的方式)按IN()子句中的值的顺序排序.

问题是我有2个查询,一个获取所有ID,第二个查询所有信息.第一个创建我想要第二个订购的ID的顺序.ID以正确的顺序放入IN()子句中.

所以它就像(非常简化):

SELECT id FROM table1 WHERE ... ORDER BY display_order, name

SELECT name, description, ... WHERE id IN ([id's from first])
Run Code Online (Sandbox Code Playgroud)

问题是第二个查询不会按照将ID放入IN()子句的顺序返回结果.

我发现的一个解决方案是将所有ID放入具有自动递增字段的临时表中,然后将该字段连接到第二个查询中.

有更好的选择吗?

注意:由于第一个查询是"由用户"运行而第二个查询是在后台进程中运行,因此无法使用子查询将2到1的查询组合在一起.

我正在使用MySQL,但我认为让它注意到其他数据库的选项可能也很有用.

mysql sql sql-order-by

144
推荐指数
6
解决办法
11万
查看次数

在Postgresql中模拟MySQL的ORDER BY FIELD()

刚刚试用PostgreSQL,来自MySQL.在我们的Rails应用程序中,我们有几个带SQL的位置,如下所示:

SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
Run Code Online (Sandbox Code Playgroud)

没过多久就发现PostgreSQL不支持/允许这样做.

有谁知道如何在PostgreSQL中模拟这种行为,还是我们必须将整理到代码中?

mysql postgresql

42
推荐指数
6
解决办法
2万
查看次数

django:__ in query lookup不保持querset中的顺序

我按特定顺序拥有ID

>>> album_ids = [24, 15, 25, 19, 11, 26, 27, 28]
>>> albums = Album.objects.filter( id__in=album_ids, published= True )
>>> [album.id for album in albums]
[25, 24, 27, 28, 26, 11, 15, 19]
Run Code Online (Sandbox Code Playgroud)

我需要查询集中的相册作为album_ids中的id.有人请告诉我如何维护订单?或获取专辑中的专辑?

django django-queryset stable-sort

25
推荐指数
4
解决办法
4472
查看次数

Django QuerySet按ID自定义排序

给定一个id/pks列表,我想生成一个QuerySet由列表中的索引排序的对象.

通常我会先说:

pk_list = [5, 9, 2, 14]
queryset = MyModel.objects.filter(pk__in=pk_list)
Run Code Online (Sandbox Code Playgroud)

当然,这将返回的对象,但在模型元排序属性的顺序,我希望得到的顺序记录pk以秒pk_list.

最终结果必须是一个 QuerySet对象(不是列表),因为我希望将有序文件传递QuerySet给Django的ModelMultipleChoiceField表单字段.

python django django-queryset

15
推荐指数
3
解决办法
3522
查看次数