相关疑难解决方法(0)

禁用ONLY_FULL_GROUP_BY

我不小心启用了ONLY_FULL_GROUP_BY这样的模式:

SET sql_mode = 'ONLY_FULL_GROUP_BY';
Run Code Online (Sandbox Code Playgroud)

我该如何禁用它?

mysql mysql-workbench

538
推荐指数
25
解决办法
72万
查看次数

GROUP BY和DISTINCT之间有什么区别吗?

前几天我学到了一些关于SQL的简单知识:

SELECT c FROM myTbl GROUP BY C
Run Code Online (Sandbox Code Playgroud)

结果与:

SELECT DISTINCT C FROM myTbl
Run Code Online (Sandbox Code Playgroud)

我很好奇,SQL引擎处理命令的方式有什么不同,还是它们真的是同一个东西?

我个人更喜欢不同的语法,但我相信它更多地出于习惯而不是其他任何东西.

编辑:这不是关于聚合的问题.的使用GROUP BY与聚合函数了解.

sql group-by distinct

291
推荐指数
13
解决办法
21万
查看次数

SQLite - 选择一列的DISTINCT并获取其他列

我有一个这样的表(但有更多列):

Code    Quantity         
-----   --------       
00001      1           
00002      1           
00002      1           
00002      2           
00003      2          
00003      1          
Run Code Online (Sandbox Code Playgroud)

我希望得到与SELECT DISTINCT Code FROM table(00001,00002,00003)相同的结果,但是与所有其他表列相同.

更新:如果我执行此操作:SELECT DISTINCT Code, Quantity from table 我得到:

    Code    Quantity         
    -----   --------       
    00001      1           
    00002      1           
    00002      2           
    00003      1          
    00003      2  
Run Code Online (Sandbox Code Playgroud)

我想得到:

    Code    Quantity         
    -----   --------       
    00001      1           
    00002      1                   
    00003      1 
Run Code Online (Sandbox Code Playgroud)

提前致谢!

sqlite select distinct ios

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

如何使用可分页Spring数据JPA选择不同的值?

我想在我的表中使用分页进行不同的选择,但它声称存在此错误。有谁知道如何解决它?

错误:

org.postgresql.util.PSQLException: ERROR:
for SELECT DISTINCT, ORDER BY expressions must appear in select list
Run Code Online (Sandbox Code Playgroud)
@Query(value = "SELECT DISTINCT budget.* FROM budget LEFT JOIN user_budget ON budget.id = user_budget.budget_id ORDER BY budget.created DESC, ?#{#pageable}", 
        countQuery = "SELECT DISTINCT count(*) FROM budget LEFT JOIN user_budget ON budget.id = user_budget.budget_id", 
        nativeQuery = true) 
public Page<Budget> findAllByfilter(Pageable pageable);
Run Code Online (Sandbox Code Playgroud)

java sql postgresql spring spring-data-jpa

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

用于从与 Timescaledb N id 对应的表中查找时间戳的最新或最大值的 SQL 查询

我在 timescale db 中有一个表 tab1,它有 3 列标签、时间、值。time 和 tag 组成了表的 pk:(time, tag)。

行数超过 500 万行。我需要找到 N 个标签中每个标签的最新时间戳或最大(时间)。

我尝试过的事情很少,我将与大家分享我的经验:

  1. 内部查询
SELECT "time", "tag", "value"
FROM tab1 
WHERE ("tag","time") IN 
(SELECT "tag", MAX("time") FROM tab1 WHERE "tag" IN(tag1,tag2) GROUP BY "tag" );
Run Code Online (Sandbox Code Playgroud)

这是给出结果,但需要大约 19 秒来执行,这超出了可接受的限制

  1. 使用时间刻度数据库中的最后一个函数
SELECT tag, last(time, time), last(value,time)
FROM tab1
WHERE "tag" IN (tag1,tag2) GROUP BY "tag" ;
Run Code Online (Sandbox Code Playgroud)

这会在 10 秒内给出输出。

我需要找到另一种类似于第二个解决方案的可行解决方案,该解决方案可能性能更好。我尝试了一些其他的东西,如 LATERAL JOIN (3)、WINDOW FUNCTIONS (ROW_NUMBER, PARTITION) (4),但解决方案并不符合预期。

  1. 使用横向给出了多列的交叉,而不是具有预期最大时间的单个值。此外,执行需要 15 秒,但这可能是由于错误的查询。
SELECT table1."tag", table1."time",table1."value" from tab1 as table1 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql time-series lateral-join timescaledb

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