我有兩張桌子albums和bands,我想看看哪些專輯沒有樂隊。我使用以下 Mysql 查詢,它作業正常:
select bands.name from bands
left join albums on bands.id = albums.band_id
group by albums.band_id
having count(albums.id) = 0;
但是在 Postgresql 中,我收到以下錯誤:
Query 1: ERROR: column "bands.name" must appear in the GROUP BY clause or be used in an aggregate function
LINE 4: select bands.name from bands left join albums on bands.id = ...
這是為什么?我覺得postgres更符合sql,不是嗎?
uj5u.com熱心網友回復:
我使用以下 Mysql 查詢,它作業正常:
它作業正常,因為它取決于禁用的 sql_mode only_full_group_by。
首先通過檢查 sql_mode 啟用它,
mysql> select @@sql_mode;
------------------------
| @@sql_mode |
------------------------
| NO_ENGINE_SUBSTITUTION |
------------------------
1 row in set (0.00 sec)
通過啟用它,
set global sql_mode ='NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY';
您應該將其添加到 .cnf 檔案以及[mysqld]
[mysqld]
sql-mode="NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/513605.html
下一篇:違反完整性約束-Laravel
