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

MySQLは、別のフィールドの最大値で2つのテーブルを結合します

    次のような2つのサブクエリを使用する必要があります:

    SELECT a.cid, a.name, a.mobile, b.date, b.balance
    FROM account a 
    JOIN
    (
        SELECT b1.* FROM balance b1
        JOIN
        (
          SELECT cid, MAX(Date) As maxDate
          FROM balance
          GROUP BY cid
        ) b2
        ON b1.cid = b2.cid
        AND b1.date = b2.maxDate
    ) b
    ON a.cid = b.cid;
    

    出力:

    CID 名前 モバイル 日付 バランス
    1 ABC 12345 2013年9月20日00:00:00 + 0000 300
    2 XYZ 98475 2013年9月21日00:00:00 + 0000 600

    このSQLFiddle を参照してください。

    編集

    コメントで説明されているように、このクエリは1つのサブクエリのみで記述することもできます:

    SELECT a.cid, a.name, a.mobile, b1.date, b1.balance 
    FROM account a 
    JOIN balance b1 ON a.cid = b1.cid     
    JOIN (
        SELECT cid, MAX(Date) As maxDate 
        FROM balance 
        GROUP BY cid
    ) b2 
    ON b1.cid = b2.cid 
    AND b1.date = b2.maxDate
    

    調整されたSQLFiddle を参照してください。



    1. mysqlクエリでシリアル番号を生成する

    2. utf8文字エンコードを使用するMySQL構成のJDBCURL

    3. 既存のテーブルに外部キーを追加する

    4. パラメータ化されたクエリ:フィールドがSELECTステートメントの値の配列にあるかどうかを確認します