Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggabungkan dua pertanyaan menjadi satu

Jika kueri yang ada melakukan apa yang Anda inginkan/butuhkan, UNION akan membuatnya cukup mudah untuk menggabungkannya, seperti;

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

Perhatikan bahwa Anda harus memilih jumlah/urutan kolom yang sama dari kedua kueri agar gabungan berfungsi. SELECT * membuat sulit untuk memverifikasi jika/itu adalah kasusnya. Jika



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menghitung kemiringan di SQL

  2. Memilih maks dari jumlah dua kolom

  3. Bagaimana cara menambahkan kondisi dalam model anak sub-sub dalam sekuel yang akan memengaruhi Model induk saya di findAndCountAll?

  4. Tip Singkat MySQL:Menggunakan Fungsi LENGTH dan TRIM

  5. MySQL - menggunakan String sebagai Kunci Utama