sql >> データベース >  >> RDS >> Mysql

2つのクエリを1つに結合する

    既存のクエリが必要なことを実行する場合は、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. PostgreSQL-GROUPBY句

    2. laravelbelongsToManyフィルター

    3. 次の就業日を見つけるには

    4. それぞれ1つのスキーマを持つ複数のデータベースを使用するのが良いですか、それとも複数のスキーマを持つ1つのデータベースを使用するのが良いですか?