我不小心启用了ONLY_FULL_GROUP_BY这样的模式:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Run Code Online (Sandbox Code Playgroud)
我该如何禁用它?
前几天我学到了一些关于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与聚合函数了解.
我有一个这样的表(但有更多列):
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)
提前致谢!
我想在我的表中使用分页进行不同的选择,但它声称存在此错误。有谁知道如何解决它?
错误:
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) 我在 timescale db 中有一个表 tab1,它有 3 列标签、时间、值。time 和 tag 组成了表的 pk:(time, tag)。
行数超过 500 万行。我需要找到 N 个标签中每个标签的最新时间戳或最大(时间)。
我尝试过的事情很少,我将与大家分享我的经验:
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 秒来执行,这超出了可接受的限制
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),但解决方案并不符合预期。
SELECT table1."tag", table1."time",table1."value" from tab1 as table1 …Run Code Online (Sandbox Code Playgroud) sql ×3
distinct ×2
postgresql ×2
group-by ×1
ios ×1
java ×1
lateral-join ×1
mysql ×1
select ×1
spring ×1
sqlite ×1
time-series ×1
timescaledb ×1