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

Tham gia một đến nhiều và truy xuất kết quả duy nhất

Đơn giản hơn, ngắn hơn, nhanh hơn với DISTINCT ON của PostgreSQL :

SELECT DISTINCT ON (a.id)
       a.id, a.name, a.date, b.code1, b.code2
FROM   table_a a
LEFT   JOIN table_b b USING (id)
ORDER  BY a.id, b.sort

Chi tiết, giải thích, điểm chuẩn và liên kết trong câu trả lời có liên quan chặt chẽ này .
Tôi sử dụng LEFT JOIN , để các hàng từ table_a không có bất kỳ hàng phù hợp nào trong table_b không bị rớt.

Ghi chú bên lề:

Mặc dù được cho phép trong PostgreSQL, nhưng không khôn ngoan nếu sử dụng date như tên cột. Đó là một từ dành riêng trong mọi tiêu chuẩn SQL và một tên kiểu trong PsotgreSQL.

Nó cũng là một mô hình chống đặt tên cho cột ID id . Không mô tả và không hữu ích. Một (trong số nhiều) quy ước đặt tên có thể có là đặt tên nó sau bảng nơi nó là khóa chính:table_a_id . Cùng tên cho các khóa ngoại tham chiếu đến nó (nếu không có tên tự nhiên nào khác được ưu tiên).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để ghép hai từ cuối cùng trong một câu trong PostgreSQL?

  2. Liên kết tham số mảng với truy vấn gốc

  3. Tìm kiếm toàn văn kể từ PostgreSQL 8.3

  4. rake db:tạo cơ sở dữ liệu ném không tồn tại lỗi với postgresql

  5. Không thể xác định tên nhà cung cấp cho nhà máy của nhà cung cấp thuộc loại 'Npgsql.NpgsqlFactory'