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

Tìm kiếm trên nhiều bảng và cũng hiển thị tên bảng trong các hàng kết quả

Bạn đang tìm kiếm SQL động. Tự động tập hợp truy vấn của bạn từ danh mục hệ thống:

SELECT string_agg('SELECT student_name, '''
                   || c.oid::regclass || ''' AS tbl, pid FROM '
                   || c.oid::regclass
                   || $$ WHERE student_name = 'John Doe'$$
                 , E'\nUNION ALL\n')
FROM   pg_namespace n
JOIN   pg_class     c ON c.relnamespace = n.oid
WHERE  n.nspname = 'public'         -- schema name where your tables lie
AND    c.relname LIKE 't%'          -- and / or filter table names
AND    EXISTS (
   SELECT 1 FROM pg_attribute 
   WHERE  attrelid = c.oid
   AND    attname = 'student_name'  -- make sure column exists
   AND    NOT attisdropped          -- and is alive
   );

Tạo chuỗi truy vấn:

SELECT student_name, 'tbl1' AS tbl, pid FROM tbl1 WHERE student_name = 'John Doe'
UNION ALL
SELECT student_name, 'tbl2' AS tbl, pid FROM tbl2 WHERE student_name = 'John Doe'
UNION ALL
SELECT student_name, 'tbl3' AS tbl, pid FROM tbl3 WHERE student_name = 'John Doe'
...

Sau đó, chạy nó trong cuộc gọi thứ hai hoặc hoàn toàn tự động hóa nó bằng hàm PL / pgSQL bằng cách sử dụng EXECUTE . Ví dụ:
Chọn một tập hợp các cột động từ một bảng và lấy tổng cho mỗi cột

Truy vấn này tạo ra an toàn mã có số nhận dạng được khử trùng ngăn chặn việc đưa vào SQL. (Giải thích cho oid::regclass tại đây.)

Có nhiều câu trả lời liên quan hơn. Sử dụng tìm kiếm.

BTW, LIKE trong student_name LIKE 'John Doe' là vô nghĩa. Không có ký tự đại diện, chỉ cần sử dụng = .



  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ỗi Nhập:Không tìm thấy biểu tượng:_PQencryptPasswordConn nghĩa là gì và làm cách nào để khắc phục?

  2. Nâng cấp tự động gần như bằng không thời gian ngừng hoạt động của các cụm PostgreSQL trong đám mây (Phần I)

  3. Để bỏ qua các khóa trùng lặp trong quá trình 'sao chép từ' trong postgresql

  4. Đếm số lần xuất hiện của một chuỗi con trong một chuỗi trong PostgreSQL

  5. ứng dụng khách postgresql tốt cho windows?