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

Kết hợp hai truy vấn thành một

Nếu các truy vấn hiện có thực hiện những gì bạn muốn / cần, UNION sẽ làm cho việc kết hợp chúng trở nên khá đơn giản, giống như;

SELECT * FROM (
    SELECT is_private 0, <field1>,<field2>,<field3>, ... ,(SELECT COUNT(*) 
               FROM votes 
               WHERE message_id = m.message_id
                 AND vote_type = 'like') AS likes,
              (SELECT COUNT(*) 
               FROM votes
               WHERE message_id = m.message_id 
               AND vote_type = 'dislike') AS dislikes 
    FROM messages m
    WHERE 1 #and hidden is null
      and recipient_id = 1
    UNION ALL
    SELECT 1, <field1>, <field2>, <field3>, ... ,(SELECT COUNT(*) 
               FROM votes 
               WHERE message_id = m.message_id
                 AND vote_type = 'like') AS likes,
              (SELECT COUNT(*)
               FROM votes
               WHERE message_id = m.message_id  
                 AND vote_type = 'dislike') AS dislikes 
    FROM private_messages m 
    WHERE 1 #and hidden is null 
      and recipient_id = 1 
)
ORDER BY datetime DESC

Lưu ý rằng bạn cần chọn cùng một số lượng / thứ tự các cột từ cả hai truy vấn để liên hợp hoạt động. SELECT * làm cho khó xác minh nếu / đó là trường hợp. Nếu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đôi khi kết nối bị treo với Amazon RDS MySQL &Play Framework 1.2.5 (cài đặt mặc định c3p0)

  2. Làm cách nào để kết hợp hai câu lệnh CẬP NHẬT trong một truy vấn MySQL?

  3. Percona Live Dublin - Tóm tắt sự kiện và các phiên của chúng tôi

  4. MySQL regex trong thời gian chạy

  5. MySQL trên bản cập nhật khóa trùng lặp