Group-By

如何在 SQLite 中使用非聚合/裸列或使用多行 SELECT 強制執行 GROUP BY 的嚴格處理

  • April 17, 2020

與其他一些 RDBMS 不同,SQLite 確實允許在SELECT查詢中使用裸列GROUP BY,即並非所有選定的列都需要成為 group by 或聚合函式的一部分。在這種情況下,將為分組的輸出行選擇結果集中的第一個值,而不管該值是否在結果集中的所有條目中都是恆定的。

類似的事情似乎發生在返回多行的UPDATE查詢SELECTSELECT,其中只能更新一行。在這種情況下,來自 的第一個結果SELECT用於更新目標行。

我想知道在這種情況下是否可以強制 SQLite 更加嚴格並拋出錯誤。

為了說明,考慮這個 fiddle。這將B使用SELECT. 相反,我想要的是生成錯誤。

SQLite 向所有標量子查詢隱式添加“LIMIT 1” 。沒有內置機制可以改變這一點;您將不得不修改 SQLite 的原始碼。

引用自:https://dba.stackexchange.com/questions/265183