Mysql
 sql >> база данни >  >> RDS >> Mysql

Комбиниране на две заявки в една

Ако съществуващите заявки правят това, което искате/имате нужда, UNION ще направи доста лесно комбинирането им, нещо като;

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

Обърнете внимание, че трябва да изберете същия брой/ред на колони от двете заявки, за да работи обединението. SELECT * затруднява проверката дали/че това е така. Ако



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване на грешка при дублиране на име на колона в Django без видима причина

  2. Как да актуализирате база данни на mysql без презареждане на страницата

  3. SQL:Намиране на средния брой дни между бяганията за всеки бегач

  4. Съветникът за данни на Entity Framework се срива при свързване към база данни MySQL

  5. Как да импортирате XML файл в таблицата на базата данни MySQL с помощта на XML_LOAD(); функция