私は2つのテーブルを持っています:
table_A: ID | ファイル
table_B: ID | docs_id | 承認されました | 公開 | 公開時刻 | バージョン
ここで、table_B の docs_id は table_A の id です。
最後の 20 エントリの ID とファイルを取得したい (publish_time で降順)。私の問題は、table_B にいくつかの行があり、(publish_time 以外に) バージョンだけが異なることです。だから私は最新バージョンを入手したいだけです。
SELECT d.* FROM docs d LEFT JOIN doc_versions dv ON d.id = dv.docs_id WHERE dv.approved='1' AND dv.public='1' ORDER BY publish_time DESC LIMIT 0,20
このクエリを改善するにはどうすればよいですか? バージョン フィールドが原因で、行がまったく同じではないため、個別の機能はありません (publish_time タイムスタンプで秒数を数えていないため、publish_time が別の行と等しい行が存在する可能性がありますが、バージョンは異なります。 .)