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

Truy vấn ĐẶT HÀNG THEO số hàng được trả về từ một LỰA CHỌN khác

Cách Postgres để làm điều này:

SELECT *
FROM   users u
LEFT   JOIN (
   SELECT user_id, count(*) AS friends
   FROM   friends
   ) f USING (user_id)
ORDER  BY f.friends DESC NULLS LAST, user_id  -- as tiebreaker
  • Từ khóa AS chỉ là tiếng ồn cho bí danh bảng. Nhưng đừng bỏ qua nó khỏi bí danh cột. Hướng dẫn về "Bỏ qua Từ khóa AS":

    Trong FROM các mục, cả tiêu chuẩn và PostgreSQL đều cho phép AS được bỏ qua trước bí danh là từ khóa chưa được lưu trữ. Nhưng đây là không thực tế đối với tên cột đầu ra, vì sự mơ hồ về cú pháp .

    Nhấn mạnh đậm của tôi.

  • ISNULL() là một phần mở rộng tùy chỉnh của MySQL hoặc SQL Server. Postgres sử dụng hàm chuẩn SQL COALESCE() . Nhưng bạn không cần cả hai ở đây. Sử dụng NULLS LAST thay vào đó, mệnh đề nhanh hơn và sạch hơn. Xem:

    • PostgreSQL sắp xếp theo datetime asc, null trước?
  • Nhiều người dùng sẽ có cùng một số lượng bạn bè. Các đồng nghiệp này sẽ được sắp xếp tùy ý. Việc thực thi lặp đi lặp lại có thể mang lại thứ tự sắp xếp khác nhau, điều này thường không được mong muốn. Thêm các biểu thức khác vào ORDER BY như tiebreaker. Cuối cùng, khóa chính giải quyết bất kỳ sự mơ hồ nào còn lại.

  • Nếu hai bảng có cùng tên cột user_id (giống như họ nên làm) bạn có thể sử dụng phím tắt cú pháp USING trong mệnh đề nối. Một tính năng SQL tiêu chuẩn khác. Tác dụng phụ chào mừng:user_id chỉ được liệt kê một lần trong đầu ra cho SELECT * , trái ngược với khi tham gia với ON . Nhiều khách hàng thậm chí không chấp nhận các tên cột trùng lặp trong đầu ra.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ánh xạ văn bản PostgreSQL [] [] kiểu và kiểu Java

  2. Làm cách nào tôi có thể tạo ràng buộc để kiểm tra xem email có hợp lệ trong postgres hay không?

  3. Làm cách nào để chuyển ứng dụng ray hiện có của tôi lên heroku? (sqlite đến postgres)

  4. Cách tạo Tổng thời gian chạy vòng quay

  5. PgBouncer 1.7 - “Màu sắc thay đổi sau khi phục sinh”