相关疑难解决方法(0)

按IN值列表排序

我在PostgreSQL 8.3中有一个简单的SQL查询,可以获取一堆注释.我在子句中为构造提供了一个值的排序列表:INWHERE

SELECT * FROM comments WHERE (comments.id IN (1,3,2,4));
Run Code Online (Sandbox Code Playgroud)

这将以任意顺序返回注释,在我碰巧是ids之类的1,2,3,4.

我希望结果行像IN构造中的列表一样排序:(1,3,2,4).
怎么实现呢?

sql postgresql sql-order-by sql-in

146
推荐指数
7
解决办法
9万
查看次数

按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万
查看次数

在 postgres 中选择时保留顺序

在 psql 中(至少在 v9 中),如果我这样做

select id from users where id in (2, 1, 1);
Run Code Online (Sandbox Code Playgroud)

select id from users where id in (1, 2);
Run Code Online (Sandbox Code Playgroud)

它们都以相同的顺序返回结果(并消除重复),例如:1, 22, 1, 1如何在第一个查询中返回?

sql postgresql

3
推荐指数
1
解决办法
1971
查看次数

标签 统计

sql ×3

postgresql ×2

sql-order-by ×2

mysql ×1

sql-in ×1