相关疑难解决方法(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万
查看次数

Postgresql选择column = array的行

这是我想要做的总结:

$array[0] = 1;
$array[1] = 2;

$sql = "SELECT * FROM table WHERE some_id = $array"
Run Code Online (Sandbox Code Playgroud)

显然有一些语法问题,但这就是我想要做的,而且我还没有发现任何显示如何做的事情.

目前,我的计划是按照以下方式做点什么:

foreach($idList as $is)
    $where .= 'some_id=' . $id . ' OR';
endforeach
$sql = "SELECT * FROM table WHERE " . $where;
Run Code Online (Sandbox Code Playgroud)

那么PostgreSQL中是否支持使用数组进行搜索,或者我是否必须执行与我的解决方案类似的操作?

postgresql

52
推荐指数
3
解决办法
7万
查看次数

IN()子句中的PostgreSQL ORDER BY值

好的,有一些关于如何做到这一点的答案.但所有答案都假设查询选择了全部.如果您有明确的选择,则方法不再有效.

请参阅此处了解该方法:在Postgresql中模拟MySQL的ORDER BY FIELD()

基本上我有

SELECT DISTINCT id 
FROM items 
WHERE id IN (5,2,9) 
ORDER BY
 CASE id
  WHEN 5 THEN 1 
  WHEN 2 THEN 2
  WHEN 9 THEN 3
 END
Run Code Online (Sandbox Code Playgroud)

当然,这打破并说

"PGError:错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中"

有没有办法按照IN子句中的值的顺序在PostgreSQL中排序查询结果?

mysql arrays postgresql

5
推荐指数
1
解决办法
3164
查看次数

按照IN子句的顺序查询数据

select osmid,ST_X(shape),ST_Y(shape) 
from osmpoints 
where (osmpoints.osmid, osmpoints.osmtimestamp) 
     IN  (select osmid,MAX(osmtimestamp) 
          from osmPoints 
          GROUP BY osmid 
          Having MAX(osmtimestamp) <= '2019-09-16T01:23:55Z' 
            AND osmid in ('4426786454','1861591896','1861591869','1861591895',
                          '4426786455','2038185115','1861591853','6797739995',
                          '2299605892','6797739994','1861591898','2038185111','4426786454'));
Run Code Online (Sandbox Code Playgroud)

当我运行这个查询时,我得到基于 osmid 列的排序行。但我的问题是如何按在 IN 子句中使用的 osmid 的顺序获取行?

sql postgresql group-by having

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

标签 统计

postgresql ×4

sql ×2

arrays ×1

group-by ×1

having ×1

mysql ×1

sql-in ×1

sql-order-by ×1