2012-02-11 3 views
2

私は2つの異なるテーブルからの結果をマージしたい、彼らは共通している唯一のものは、唯一以下のクエリが最初の選択から2つの列を示しMYSQL UNION予期しない結果を生成し、不足している列が

date_modと呼ばれる日付フィールドでありますステートメント。 profile_id列は表示されません。

それを微調整する方法については、date_modフィールドの順序に基づいて両方のテーブルから5つの最新の結果を得ることができます。

SELECT resume_id, date_mod FROM resumes ORDER BY date_mod 
UNION ALL 
SELECT profile_id, date_mod FROM profiles ORDER BY date_mod LIMIT 5 

答えて

6

profile_idが表示されますが、列にはラベルが1つしかありません。最初の選択。

SELECT resume_id as id, date_mod as date, 'resume' as type FROM resumes 
UNION ALL 
SELECT profile_id, date_mod, 'profile' FROM profiles 
ORDER BY date 
LIMIT 5 
+0

これは完全に機能しました。ありがとうございます。 – jsuissa

0

私はリミット5あなたはおそらくこれはあなたがマージベースに順序を適用する必要があります

+0

ありがとうございます。 ORDER BYのためにエラーが発生したので、単純化しました。SELECT * FROM(SELECT resume_id、date_mod FROMはUNION ALL SELECTのprofile_id、date_mod FROMのプロファイルを再開します)。しかし、これは私に「すべてのテーブルにエイリアスが必要です」というエラーを出しました。 – jsuissa

0

探しているものを提供しなければならないクエリつまり

SELECT * FROM (SELECT resume_id,date_mod FROM resumes ORDER BY date_mod UNION ALL SELECT profile_id, date_mod FROM profiles ORDER BY date_mod) LIMIT 5 

をラップする必要があり、問題を引き起こしていると考えています。

(SELECT resume_id, date_mod FROM resumes 
UNION ALL 
SELECT profile_id, date_mod FROM profiles) ORDER BY date_mod LIMIT 5 
1

これを試してみてください:UNIONを行う場合

SELECT * 
FROM 
    (SELECT resume_id as `ID`, date_mod 
    FROM resumes 
     UNION 
    SELECT profile_id as `ID`, date_mod 
    FROM profiles) iResult 
ORDER BY iResult.date_mod 
LIMIT 5 
+0

'UNION'は不要な暗黙ソートを引き起こすので、' UNION ALL'がより好ましいでしょう。そうでなければ、これは私が投稿しようとしていたものです。 –

0

、列は修飾する同じ「エイリアス」列の結果とデータ型でなければなりません。トップ5が必要な場合は、両側からMOST 5を取得するには、実際にボトムセットに制限を適用する必要があります。その後、両方の個々のファイルからすべてのレコードを事前に返さないように、全リミット5を適用します。

select 
     Source, 
     SrcID, 
     Date_Mod 
    from 
     (SELECT 
       "R" as Source, 
       resume_id as SrcID, 
       date_mod 
      FROM 
       resumes 
      ORDER BY 
       date_mod 
      LIMIT 5 
     UNION ALL 
     SELECT 
       "P" as Source, 
       profile_id as SrcID, 
       date_mod 
      FROM 
       profiles 
      ORDER BY 
       date_mod 
      LIMIT 5) PreQuery 
    order by 
     Date_Mod 
    LIMIT 5 
関連する問題