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

tìm kiếm các bản sao trên nhiều trường trong postgresql

Để tìm tất cả các hàng có số điện thoại trùng lặp (cột chéo):

SELECT *
FROM   contacts c
WHERE  EXISTS (
   SELECT FROM contacts x
   WHERE  x.mobile_phone IN (c.mobile_phone, c.home_phone)
       OR x.home_phone   IN (c.mobile_phone, c.home_phone)
   AND x.contact_id <> c.contact_id  -- except self
   );

Để tìm tất cả các số điện thoại trùng lặp trên hai cột:

SELECT DISTINCT phone
FROM  (
   SELECT mobile_phone AS phone
   FROM   contacts c
   WHERE  EXISTS (
      SELECT FROM mobile_phone x
      WHERE  c.mobile_phone IN (x.mobile_phone, x.home_phone)
      AND    c.contact_id <> x.contact_id  -- except self
      )
   UNION ALL
   SELECT home_phone
   FROM   contacts c
   WHERE  EXISTS (
      SELECT FROM mobile_phone x
      WHERE  c.home_phone = x.home_phone   -- cross-over covered by 1s SELECT
      AND    c.contact_id <> x.contact_id  -- except self
      )
   ) sub;

Lặp lại cùng một số trong cả hai cột của cùng một hàng không đủ điều kiện. Tôi không nghĩ rằng bạn muốn bao gồm những thứ đó. (Vẫn sẽ là tiếng ồn mà có thể không được phép nếu CHECK ràng buộc.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psql - lưu kết quả của lệnh vào một tệp

  2. Cải thiện hiệu suất truy vấn tổng hợp PostgresSQL

  3. Cách thực thi lệnh PostgreSQL RAISE động

  4. Làm cách nào để kết hợp nhiều hàng thành một cột bằng PostgreSQL?

  5. LỖI:lỗi cú pháp tại hoặc gần OVER