标签: sql-limit

使用PostgreSQL更新前N个值

我想更新表中列的前10个值.我有三列; id,accountaccountrank.要获得前10个值,我可以使用以下内容:

SELECT  * FROM accountrecords    
ORDER BY account DESC
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

我想要做的是根据的大小将值设置accountrank为一系列.这可以在PostgreSQL中做到吗?1 - 10account

sql postgresql sql-order-by sql-update sql-limit

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

PostgreSQL相当于TOP n WITH TIES:LIMIT"with ties"?

我在SQL Server中寻找类似的东西:

SELECT TOP n WITH TIES FROM tablename
Run Code Online (Sandbox Code Playgroud)

LIMIT在PostgreSQL中知道,但是上面存在的相同吗?我只是很好奇,因为它每次都会为我节省额外的查询.

如果我有一个Numbers属性表nums:{10, 9, 8, 8, 2}.我想做的事情如下:

SELECT nums FROM Numbers ORDER BY nums DESC LIMIT *with ties* 3
Run Code Online (Sandbox Code Playgroud)

它应该返回,{10, 9, 8, 8}因为它需要前3加上额外的,8因为它绑定另一个.

sql postgresql window-functions sql-limit

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

在EXISTS查询中使用LIMIT的任何一点?

是否有添加任何性能好处LIMIT到一个EXISTS查询,或将MySQL的应用在自己的极限?

例:

IF EXISTS (
    SELECT 1
      FROM my_table
     LIMIT 1    -- can this improve performance?
)
THEN ... END IF;
Run Code Online (Sandbox Code Playgroud)

mysql exists query-optimization sql-limit

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

max()与ORDER BY DESC + LIMIT 1的性能

我今天正在对一些慢速SQL查询进行故障排除,并且不太了解下面的性能差异:

当尝试max(timestamp)基于某些条件从数据表中提取时,使用MAX()ORDER BY timestamp LIMIT 1匹配行存在时慢,但如果找不到匹配的行则相当快.

SELECT timestamp
FROM data JOIN sensors ON ( sensors.id = data.sensor_id )
WHERE sensor.station_id = 4
ORDER BY timestamp DESC
LIMIT 1;
(0 rows)  
Time: 1314.544 ms

SELECT timestamp
FROM data JOIN sensors ON ( sensors.id = data.sensor_id )
WHERE sensor.station_id = 5
ORDER BY timestamp DESC
LIMIT 1;
(1 row)  
Time: 10.890 ms

SELECT MAX(timestamp)
FROM data JOIN sensors ON ( sensors.id = data.sensor_id )
WHERE sensor.station_id …
Run Code Online (Sandbox Code Playgroud)

sql postgresql aggregate max sql-limit

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

如何在MySQL中制作动态限制?

我有这样一张桌子:

// notifications
+----+--------------+------+---------+------------+
| id |      event   | seen | id_user | time_stamp |
+----+--------------+------+---------+------------+
| 1  | vote         | 1    | 123     | 1464174617 |
| 2  | comment      | 1    | 456     | 1464174664 |
| 3  | vote         | 1    | 123     | 1464174725 |
| 4  | answer       | 1    | 123     | 1464174813 |
| 5  | comment      | NULL | 456     | 1464174928 |
| 6  | comment      | 1    | 123     | …
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-limit

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

DB2使用LIMIT和OFFSET

我正在开发一个Java Web服务,允许在从IBM Mid Range Machine(AS400)上的DB2数据库中获取大数据集时进行分页.

例如; 如果数据集中有10000条记录,我想一次以1000块为单位获取它们.

我发现这篇文章解释说我可以使用LIMIT和OFFSET.但我需要将DB2_COMPATIBILITY_VECTOR变量设置为MYS.

现在我一直在谷歌搜索,看到你可以db2set用来设置这个变量.但是我无法找到在哪里键入此命令?

我正在开发一台Windows机器,我安装了iSeries,并且可以通过iSeries 5250仿真器访问IBM Mid Range Machine.

我知道这一定是一个真正的菜鸟问题,但我如何将DB2_COMPATIBILITY_VECTOR变量更改为MYS

sql db2 ibm-midrange sql-limit

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

获取 n 个分组类别并将其他类别合二为一

我有一个具有以下结构的表:

Contents (
  id
  name
  desc
  tdate
  categoryid
  ...
)
Run Code Online (Sandbox Code Playgroud)

我需要对这个表中的数据做一些统计。例如,我想通过分组和该类别的 id 来获取具有相同类别的行数。此外,我想n按降序限制它们的行,如果有更多可用类别,我想将它们标记为“其他”。到目前为止,我已经对数据库提出了 2 个查询:

n按降序选择行:

SELECT COALESCE(ca.NAME, 'Unknown') AS label
    ,ca.id AS catid
    ,COUNT(c.id) AS data
FROM contents c
LEFT OUTER JOIN category ca ON ca.id = c.categoryid
GROUP BY label
    ,catid
ORDER BY data DESC LIMIT 7
Run Code Online (Sandbox Code Playgroud)

选择其他行作为一:

SELECT 'Others' AS label
    ,COUNT(c.id) AS data
FROM contents c
LEFT OUTER JOIN category ca ON ca.id = c.categoryid
WHERE c.categoryid NOT IN ($INCONDITION)
Run Code Online (Sandbox Code Playgroud)

但是当我在 db 表中没有任何类别组时,我仍然会得到一个“其他”记录。是否可以在一个查询中进行,并使“其他”记录可选?

sql postgresql aggregate query-optimization sql-limit

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

如何保证Postgres中递归CTE至少返回N行

SELECT TOP ...在Postgres 中描述查询的大多数资源都说你应该使用LIMIT,ORDER BY如果需要通过某种顺序选择顶部元素,可能使用子句.

你会怎么做,如果你需要选择一个递归查询,那里是没有排序的前N个元素和有可能的查询可以在不递归返回N多行少(这样TOP的部分是必要的,以确保结果set 至少是 N行,而LIMIT可以允许更少的行)?

我的具体用例是动态SQL模式的修改,用于选择表的随机子样本.

这是我修改的sql源链接.最简单的方法是查看那里定义的最终函数_random_select.它紧跟上述链接,但在输入表和输出结果集中已经被修改为多态,并且正确地说明了只返回输入表中已经存在的列的需要(还有另一个动态SQL)黑客row_number从最终结果集中排除中期结果).

这是一个眼睛,但它是我最接近可重复的例子.如果您使用_random_select并尝试从大于4500行的表中获取大约4500行的内容,则会开始以较高的概率看到较小的结果集,并且只会随着您增加所需样本的大小而变得更糟(因为重复的出现随着你想要的样本变大,情况会变得更糟)

请注意,在我的修改中,我没有使用_gaps此链接中的技巧,如果某个索引列中存在间隙,则意味着过度采样以抵消采样效率低下.那部分与这个问题无关,在我的情况下,我row_number用来确保有一个整数列,没有可能的间隙.

CTE的是递归的,以确保如果CTE的第一,非递归部分不给你足够的行(因为被去除重复的UNION),那么它会回去经过一轮又一轮的CTE的递归调用,并继续坚持更多的结果,直到你有足够的.

在链接的示例中,LIMIT使用,但我发现这不起作用.该方法返回的结果较少,因为最多LIMIT只能保证N行.

你如何获得至少 N行保证?选择TOPN行似乎是执行此操作的自然方式(因此递归CTE必须保持一直持续直到它获得足够的行来满足TOP条件),但这在Postgres中不可用.

sql postgresql recursive-query common-table-expression sql-limit

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

Postgres 查询结果到 json 对象

我的查询如下

SELECT w.payload,
       Count('payload') OVER () AS ROWCOUNT
FROM wholesale_confirmation.wholesale_order_confirmation w
WHERE w.delivery_date = COALESCE(NULL, w.delivery_date)
  AND w.ship_to_location_id = COALESCE(NULL, w.ship_to_location_id)
  AND w.order_raised_date = COALESCE(NULL, w.order_raised_date)
  AND w.ship_from_location_id = COALESCE(NULL, w.ship_from_location_id)
LIMIT 10
OFFSET 0;
Run Code Online (Sandbox Code Playgroud)

这给了我这样的结果:

结果

我想要{"payload:"[payload1,payload2,payload3],"rowcount":n}


Postgres 10.3版,payload数据类型为jsonb

postgresql pagination aggregate-functions sql-limit jsonb

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

将连接限制为一行

我有以下查询:

SELECT sum((select count(*) as itemCount) * "SalesOrderItems"."price") as amount, 'rma' as     
    "creditType", "Clients"."company" as "client", "Clients".id as "ClientId", "Rmas".* 
FROM "Rmas" JOIN "EsnsRmas" on("EsnsRmas"."RmaId" = "Rmas"."id") 
    JOIN "Esns" on ("Esns".id = "EsnsRmas"."EsnId") 
    JOIN "EsnsSalesOrderItems" on("EsnsSalesOrderItems"."EsnId" = "Esns"."id" ) 
    JOIN "SalesOrderItems" on("SalesOrderItems"."id" = "EsnsSalesOrderItems"."SalesOrderItemId") 
    JOIN "Clients" on("Clients"."id" = "Rmas"."ClientId" )
WHERE "Rmas"."credited"=false AND "Rmas"."verifyStatus" IS NOT null 
GROUP BY "Clients".id, "Rmas".id;
Run Code Online (Sandbox Code Playgroud)

问题是表"EsnsSalesOrderItems"可以EsnId在不同的条目中具有相同的表.我想将查询限制为仅拉取"EsnsSalesOrderItems"具有相同的最后一个条目"EsnId".

"最后"条目我指的是以下内容:

表中最后出现的那个"EsnsSalesOrderItems".因此,例如,如果"EsnsSalesOrderItems"有两个条目和"EsnId" = 6和 …

sql postgresql join greatest-n-per-group sql-limit

5
推荐指数
3
解决办法
2万
查看次数