Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lợi ích của chế độ only_full_group_by là gì?

only_full_group_by =on nói với MySQL engine:Không áp dụng GROUP BY khi bạn nghi ngờ về kết quả sẽ hiển thị và thông báo lỗi. Chỉ áp dụng nó nếu Group By cụ thể cho bạn biết bạn phải làm gì. tức là khi Group By là đầy đủ và hoàn hảo!

only_full_group_by =tắt nói với MySQL engine:luôn áp dụng GROUP BY và nếu bạn nghi ngờ về kết quả cần chọn, chỉ cần chọn ngẫu nhiên một kết quả!

Bạn không cần phải tắt tính năng này nếu sử dụng GROUP BY đúng cách!

Ví dụ:

Bảng:người dùng

 id   |  name
----------------
  1      ali
  2      john
  3      ali

Khi bạn sử dụng GROUP BY trên name cột:

SELECT * FROM users GROUP BY name;

Có hai kết quả có thể xảy ra:

  1      ali
  2      john     

HOẶC

  2      john     
  3      ali

MYSQL không biết chọn kết quả nào! Vì có id khác nhau s nhưng cả hai đều có name=ali .

Giải pháp 1:

chỉ chọn name lĩnh vực:

SELECT name FROM users GROUP BY name;

kết quả:

  ali
  john     

Đây là một giải pháp hoàn hảo. xóa các cột tạo nên GROUP BY bối rối. Điều này có nghĩa là bạn biết mình đang làm gì. Thông thường, bạn không cần
các cột đó, nhưng nếu bạn cần, hãy chuyển đến Giải pháp3 !

Giải pháp 2:

Đang tắt only_full_group_by . MYSQL sẽ chọn một trong hai kết quả có thể có NGẪU NHIÊN !! (Sẽ ổn nếu bạn không thực sự quan tâm id gì nó sẽ chọn, nhưng hãy nhớ bật nó lên ngay sau truy vấn của bạn để ngăn chặn các hành vi không mong muốn trong các groupBys trong tương lai)

Giải pháp 3

Sử dụng Aggregate hàm như MIN() , MAX() để giúp MYSQL quyết định những gì nó phải chọn.

Ví dụ:

SELECT MAX(id), name FROM users GROUP BY name;

kết quả:

  2      john     
  3      ali

Nó sẽ chọn ali hàng có id tối đa .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ngăn chặn việc chèn hàng trùng lặp trong php / mysql

  2. Đếm số lần xuất hiện của từ trong một cột bảng

  3. DAO.Recordset.Update kết quả trong khóa tính toán

  4. Sử dụng JQuery để chèn giá trị vào mySQL

  5. Bảng tra cứu quan trọng như thế nào?