1

これは私の SQL です。

SELECT
    cs.name,
    ct.name AS type,
    cr.date,
    cr.hg_version,
    cr.public,
    cr.tag,
    cr.reference,
    cr.description
FROM changelog_systems cs
LEFT JOIN changelog_rows cr ON cr.changelog_system_id = cs.id
LEFT JOIN changelog_types ct ON ct.id = cr.type_id
GROUP BY name
ORDER BY cr.date ASC

問題は、システムの最新の日付を取得できないことです。代わりに、生き残った最後の行を取得するだけGROUP BYです。

4

1 に答える 1

1

実際、あなたのクエリは完全に間違っています。SELECT 句で非集計列を使用することはできません。名前でグループ化し、SELECT 句の他のすべての列はグループ化されません。オプション ONLY_FULL_GROUP_BY が設定されていない場合でも、MySQL はこの (間違った) クエリを受け入れますが、間違いが減ることはありません。したがって、クエリを書き直して、予測可能な結果が得られるようにする必要があります。詳細については、http: //dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode%5Fonly%5Ffull%5Fgroup%5Fbyを参照してください。

于 2013-06-11T21:06:38.050 に答える